Revert inbound to 3d5d1daa2505 to stop OS X M5 failures (backout not clean/could have been a bad merge) on a CLOSED TREE
authorEd Morley <emorley@mozilla.com>
Sat, 04 Aug 2012 18:05:15 +0100
changeset 101438 c801b99d726f06fd89b517936a42e1cffe0a1ca5
parent 101437 02cbcf0159fae7eb42e51a4faad09db878e551d5
child 101439 0a17cde2a4b69265c48577b9848b33d0a1ab0d5b
child 101440 0a48f2d0e2a0626a53b11a670f070cde9d3856b8
push id23232
push useremorley@mozilla.com
push dateSat, 04 Aug 2012 18:12:50 +0000
treeherdermozilla-central@0a17cde2a4b6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone17.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Revert inbound to 3d5d1daa2505 to stop OS X M5 failures (backout not clean/could have been a bad merge) on a CLOSED TREE
accessible/src/generic/RootAccessible.cpp
b2g/app/b2g.js
browser/base/content/test/browser_gestureSupport.js
browser/components/sessionstore/src/Makefile.in
config/rules.mk
content/base/public/nsContentUtils.h
content/base/src/nsAttrAndChildArray.cpp
content/base/src/nsAttrAndChildArray.h
content/base/src/nsContentAreaDragDrop.cpp
content/base/src/nsContentAreaDragDrop.h
content/base/src/nsContentUtils.cpp
content/base/src/nsDocument.cpp
content/base/src/nsDocument.h
content/base/src/nsINode.cpp
content/base/src/nsMappedAttributes.cpp
content/base/src/nsMappedAttributes.h
content/base/src/nsRange.cpp
content/base/src/nsScriptLoader.cpp
content/base/src/nsTreeSanitizer.cpp
content/base/src/nsXMLHttpRequest.cpp
content/base/src/nsXMLHttpRequest.h
content/events/src/nsDOMEvent.cpp
content/events/src/nsDOMEvent.h
content/events/src/nsDOMUIEvent.h
content/events/src/nsEventDispatcher.cpp
content/events/src/nsEventListenerManager.cpp
content/events/src/nsEventStateManager.cpp
content/events/src/nsIMEStateManager.cpp
content/events/test/Makefile.in
content/events/test/test_bug238987.html
content/events/test/test_bug409604.html
content/events/test/test_bug617528.xul
content/events/test/test_bug716822.html
content/html/content/src/nsGenericHTMLElement.cpp
content/html/content/src/nsHTMLButtonElement.cpp
content/html/content/src/nsHTMLInputElement.cpp
content/xbl/src/nsXBLEventHandler.cpp
content/xbl/src/nsXBLPrototypeHandler.cpp
content/xbl/src/nsXBLWindowKeyHandler.cpp
content/xul/content/src/nsXULElement.cpp
content/xul/content/src/nsXULPopupListener.cpp
content/xul/document/src/nsXULContentSink.cpp
docshell/base/nsDocShell.cpp
dom/activities/src/ActivitiesService.jsm
dom/base/nsDOMClassInfo.cpp
dom/base/nsDOMWindowUtils.cpp
dom/base/nsGlobalWindow.cpp
dom/base/nsIScriptRuntime.h
dom/base/nsJSEnvironment.cpp
dom/base/nsJSEnvironment.h
dom/base/nsPIDOMWindow.h
dom/bindings/BindingUtils.cpp
dom/bindings/BindingUtils.h
dom/bindings/Codegen.py
dom/bindings/Errors.msg
dom/bindings/Makefile.in
dom/bindings/test/Makefile.in
dom/bindings/test/test_bug773326.html
dom/bluetooth/nsIDOMBluetoothDeviceEvent.idl
dom/bluetooth/nsIDOMBluetoothPropertyEvent.idl
dom/imptests/Makefile.in
dom/imptests/failures/webapps/DOMCore/tests/approved/test_Range-compareBoundaryPoints.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createDocument.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createElementNS.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-getElementsByTagName.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-children.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-constructors.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-defaultPrevented.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_EventTarget-dispatchEvent.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-appendChild.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-constants.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-insertBefore.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-isEqualNode.xhtml.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-removeChild.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-replaceChild.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_NodeFilter-constants.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-attributes.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-commonAncestorContainer.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-comparePoint.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-detach.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-intersectsNode.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_attributes.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_case.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_historical.html.json
dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_interfaces.html.json
dom/imptests/failures/webapps/XMLHttpRequest/tests/submissions/Ms2ger/Makefile.in
dom/imptests/failures/webapps/XMLHttpRequest/tests/submissions/Ms2ger/test_setrequestheader-invalid-arguments.htm.json
dom/imptests/idlharness.js
dom/imptests/testharness.css
dom/imptests/testharness.js
dom/imptests/webapps.mk
dom/imptests/webapps.txt
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/Document-createProcessingInstruction.js
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/attributes.js
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/case.js
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/constants.js
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/creators.js
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/productions.js
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_CharacterData-appendData.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_CharacterData-deleteData.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_CharacterData-insertData.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_CharacterData-replaceData.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMException-constants.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createDocument.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createDocumentType.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createHTMLDocument.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-hasFeature.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-adoptNode.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createComment.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createElement.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createElementNS.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createEvent.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createProcessingInstruction-literal-1.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createProcessingInstruction-literal-2.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createProcessingInstruction.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createProcessingInstruction.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-getElementById.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-getElementsByTagName.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-getElementsByTagNameNS.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-importNode.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElement-null.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElement-null.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElement-null.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-dynamic-add.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-dynamic-add.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-dynamic-add.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-dynamic-remove.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-dynamic-remove.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-dynamic-remove.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-nochild.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-nochild.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount-nochild.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-childElementCount.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-children.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild-entity.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild-entity.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild-namespace.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild-namespace.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild-namespace.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-firstElementChild.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-getElementsByClassName.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-lastElementChild.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-lastElementChild.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-lastElementChild.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-nextElementSibling.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-nextElementSibling.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-nextElementSibling.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-previousElementSibling.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-previousElementSibling.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-previousElementSibling.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-removeAttributeNS.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-siblingElement-null.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-siblingElement-null.svg
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-siblingElement-null.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-tagName.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-constants.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-constructors.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-defaultPrevented.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-initEvent.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_EventTarget-dispatchEvent.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-appendChild.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-cloneNode.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-constants.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-insertBefore.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-isEqualNode.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-lookupPrefix.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-nodeName.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-nodeName.xhtml
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-normalize.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-parentElement.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-parentNode.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-removeChild.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-replaceChild.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_NodeFilter-constants.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-attributes.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-commonAncestorContainer.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-comparePoint.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-detach.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-intersectsNode.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_attributes.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_case.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_historical.html
dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/test_interfaces.html
dom/indexedDB/nsIIDBVersionChangeEvent.idl
dom/interfaces/apps/nsIDOMMozApplicationEvent.idl
dom/interfaces/contacts/nsIDOMMozContactChangeEvent.idl
dom/interfaces/devicestorage/nsIDOMDeviceStorageChangeEvent.idl
dom/interfaces/events/nsIDOMAnimationEvent.idl
dom/interfaces/events/nsIDOMBeforeUnloadEvent.idl
dom/interfaces/events/nsIDOMCloseEvent.idl
dom/interfaces/events/nsIDOMCommandEvent.idl
dom/interfaces/events/nsIDOMCompositionEvent.idl
dom/interfaces/events/nsIDOMCustomEvent.idl
dom/interfaces/events/nsIDOMDataContainerEvent.idl
dom/interfaces/events/nsIDOMDeviceLightEvent.idl
dom/interfaces/events/nsIDOMDeviceMotionEvent.idl
dom/interfaces/events/nsIDOMDeviceOrientationEvent.idl
dom/interfaces/events/nsIDOMDeviceProximityEvent.idl
dom/interfaces/events/nsIDOMDragEvent.idl
dom/interfaces/events/nsIDOMEvent.idl
dom/interfaces/events/nsIDOMHashChangeEvent.idl
dom/interfaces/events/nsIDOMKeyEvent.idl
dom/interfaces/events/nsIDOMMessageEvent.idl
dom/interfaces/events/nsIDOMMouseEvent.idl
dom/interfaces/events/nsIDOMMouseScrollEvent.idl
dom/interfaces/events/nsIDOMMozTouchEvent.idl
dom/interfaces/events/nsIDOMMutationEvent.idl
dom/interfaces/events/nsIDOMNSEvent.idl
dom/interfaces/events/nsIDOMNotifyAudioAvailableEvent.idl
dom/interfaces/events/nsIDOMNotifyPaintEvent.idl
dom/interfaces/events/nsIDOMPageTransitionEvent.idl
dom/interfaces/events/nsIDOMPopStateEvent.idl
dom/interfaces/events/nsIDOMPopupBlockedEvent.idl
dom/interfaces/events/nsIDOMProgressEvent.idl
dom/interfaces/events/nsIDOMScrollAreaEvent.idl
dom/interfaces/events/nsIDOMSimpleGestureEvent.idl
dom/interfaces/events/nsIDOMSmartCardEvent.idl
dom/interfaces/events/nsIDOMTouchEvent.idl
dom/interfaces/events/nsIDOMTransitionEvent.idl
dom/interfaces/events/nsIDOMUIEvent.idl
dom/interfaces/events/nsIDOMUserProximityEvent.idl
dom/interfaces/load-save/nsIDOMLSProgressEvent.idl
dom/interfaces/settings/nsIDOMMozSettingsEvent.idl
dom/interfaces/smil/nsIDOMTimeEvent.idl
dom/interfaces/storage/nsIDOMStorageEvent.idl
dom/interfaces/svg/nsIDOMSVGEvent.idl
dom/interfaces/svg/nsIDOMSVGZoomEvent.idl
dom/interfaces/xul/nsIDOMXULCommandEvent.idl
dom/network/interfaces/nsIDOMUSSDReceivedEvent.idl
dom/sms/interfaces/nsIDOMSmsEvent.idl
dom/telephony/nsIDOMCallEvent.idl
dom/telephony/nsIDOMVoicemailEvent.idl
dom/wifi/nsIWifi.idl
editor/libeditor/base/nsEditor.cpp
editor/libeditor/base/nsEditor.h
editor/libeditor/base/nsEditorEventListener.cpp
editor/libeditor/html/nsHTMLEditorEventListener.cpp
embedding/browser/webBrowser/nsDocShellTreeOwner.cpp
extensions/widgetutils/src/nsWidgetUtils.cpp
js/src/config/rules.mk
js/src/jsapi.cpp
js/src/jsstr.cpp
js/src/jswrapper.cpp
js/src/jswrapper.h
js/xpconnect/src/XPCConvert.cpp
js/xpconnect/src/dom_quickstubs.qsconf
layout/base/nsPresShell.cpp
layout/forms/nsFileControlFrame.cpp
layout/forms/nsListControlFrame.cpp
layout/forms/nsTextControlFrame.cpp
layout/forms/test/test_bug348236.html
layout/generic/nsObjectFrame.cpp
layout/printing/nsPrintPreviewListener.cpp
layout/style/AnimationCommon.cpp
layout/style/Loader.cpp
layout/style/nsCSSStyleSheet.cpp
layout/style/nsCSSStyleSheet.h
layout/style/nsHTMLStyleSheet.cpp
layout/style/nsHTMLStyleSheet.h
layout/tables/BasicTableLayoutStrategy.cpp
layout/xul/base/src/nsMenuBarListener.cpp
layout/xul/base/src/nsMenuBoxObject.cpp
layout/xul/base/src/nsXULPopupManager.cpp
mobile/xul/chrome/content/Util.js
mobile/xul/chrome/content/content.js
security/manager/ssl/src/nsSmartCardEvent.cpp
security/manager/ssl/src/nsSmartCardEvent.h
toolkit/components/passwordmgr/test/test_basic_form_autocomplete.html
toolkit/components/satchel/nsFormFillController.cpp
toolkit/components/satchel/test/test_form_autocomplete.html
toolkit/components/satchel/test/test_form_autocomplete_with_list.html
toolkit/components/typeaheadfind/nsTypeAheadFind.cpp
--- a/accessible/src/generic/RootAccessible.cpp
+++ b/accessible/src/generic/RootAccessible.cpp
@@ -21,21 +21,31 @@
 #include "States.h"
 #ifdef MOZ_XUL
 #include "XULTreeAccessible.h"
 #endif
 
 #include "mozilla/dom/Element.h"
 
 #include "nsIAccessibleRelation.h"
+#include "nsIDocShell.h"
 #include "nsIDocShellTreeItem.h"
+#include "nsIDocShellTreeNode.h"
 #include "nsIDocShellTreeOwner.h"
+#include "nsIDOMElement.h"
+#include "nsIDOMEventListener.h"
 #include "nsIDOMEventTarget.h"
+#include "nsIDOMHTMLAnchorElement.h"
+#include "nsIDOMHTMLImageElement.h"
+#include "nsIDOMHTMLInputElement.h"
+#include "nsIDOMHTMLSelectElement.h"
 #include "nsIDOMDataContainerEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsIDOMXULMultSelectCntrlEl.h"
+#include "nsIDOMXULPopupElement.h"
 #include "nsIDocument.h"
 #include "nsEventListenerManager.h"
 #include "nsIFrame.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIServiceManager.h"
 #include "nsPIDOMWindow.h"
 #include "nsIWebBrowserChrome.h"
 #include "nsReadableUtils.h"
@@ -247,19 +257,19 @@ RootAccessible::DocumentActivated(DocAcc
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIDOMEventListener
 
 NS_IMETHODIMP
 RootAccessible::HandleEvent(nsIDOMEvent* aDOMEvent)
 {
-  MOZ_ASSERT(aDOMEvent);
+  nsCOMPtr<nsIDOMNSEvent> DOMNSEvent(do_QueryInterface(aDOMEvent));
   nsCOMPtr<nsIDOMEventTarget> DOMEventTarget;
-  aDOMEvent->GetOriginalTarget(getter_AddRefs(DOMEventTarget));
+  DOMNSEvent->GetOriginalTarget(getter_AddRefs(DOMEventTarget));
   nsCOMPtr<nsINode> origTargetNode(do_QueryInterface(DOMEventTarget));
   if (!origTargetNode)
     return NS_OK;
 
   DocAccessible* document =
     GetAccService()->GetDocAccessible(origTargetNode->OwnerDoc());
 
   if (document) {
@@ -284,19 +294,19 @@ RootAccessible::HandleEvent(nsIDOMEvent*
 
   return NS_OK;
 }
 
 // RootAccessible protected
 void
 RootAccessible::ProcessDOMEvent(nsIDOMEvent* aDOMEvent)
 {
-  MOZ_ASSERT(aDOMEvent);
+  nsCOMPtr<nsIDOMNSEvent> DOMNSEvent(do_QueryInterface(aDOMEvent));
   nsCOMPtr<nsIDOMEventTarget> DOMEventTarget;
-  aDOMEvent->GetOriginalTarget(getter_AddRefs(DOMEventTarget));
+  DOMNSEvent->GetOriginalTarget(getter_AddRefs(DOMEventTarget));
   nsCOMPtr<nsINode> origTargetNode(do_QueryInterface(DOMEventTarget));
 
   nsAutoString eventType;
   aDOMEvent->GetType(eventType);
 
   if (eventType.EqualsLiteral("popuphiding")) {
     HandlePopupHidingEvent(origTargetNode);
     return;
--- a/b2g/app/b2g.js
+++ b/b2g/app/b2g.js
@@ -63,16 +63,17 @@ pref("browser.sessionstore.resume_from_c
 pref("browser.sessionstore.interval", 10000); // milliseconds
 pref("browser.sessionstore.max_tabs_undo", 1);
 
 /* these should help performance */
 pref("mozilla.widget.force-24bpp", true);
 pref("mozilla.widget.use-buffer-pixmap", true);
 pref("mozilla.widget.disable-native-theme", true);
 pref("layout.reflow.synthMouseMove", false);
+pref("dom.send_after_paint_to_content", true);
 
 /* download manager (don't show the window or alert) */
 pref("browser.download.useDownloadDir", true);
 pref("browser.download.folderList", 1); // Default to ~/Downloads
 pref("browser.download.manager.showAlertOnComplete", false);
 pref("browser.download.manager.showAlertInterval", 2000);
 pref("browser.download.manager.retention", 2);
 pref("browser.download.manager.showWhenStarting", false);
--- a/browser/base/content/test/browser_gestureSupport.js
+++ b/browser/base/content/test/browser_gestureSupport.js
@@ -62,23 +62,23 @@ function test_gestureListener(evt)
   isnot(evt.screenY, 0,
         "evt.screenY (" + evt.screenY + ") does not match expected value");
 
   is(evt.direction, test_expectedDirection,
      "evt.direction (" + evt.direction + ") does not match expected value");
   is(evt.delta, test_expectedDelta,
      "evt.delta (" + evt.delta + ") does not match expected value");
 
-  is(evt.shiftKey, (test_expectedModifiers & Components.interfaces.nsIDOMEvent.SHIFT_MASK) != 0,
+  is(evt.shiftKey, (test_expectedModifiers & Components.interfaces.nsIDOMNSEvent.SHIFT_MASK) != 0,
      "evt.shiftKey did not match expected value");
-  is(evt.ctrlKey, (test_expectedModifiers & Components.interfaces.nsIDOMEvent.CONTROL_MASK) != 0,
+  is(evt.ctrlKey, (test_expectedModifiers & Components.interfaces.nsIDOMNSEvent.CONTROL_MASK) != 0,
      "evt.ctrlKey did not match expected value");
-  is(evt.altKey, (test_expectedModifiers & Components.interfaces.nsIDOMEvent.ALT_MASK) != 0,
+  is(evt.altKey, (test_expectedModifiers & Components.interfaces.nsIDOMNSEvent.ALT_MASK) != 0,
      "evt.altKey did not match expected value");
-  is(evt.metaKey, (test_expectedModifiers & Components.interfaces.nsIDOMEvent.META_MASK) != 0,
+  is(evt.metaKey, (test_expectedModifiers & Components.interfaces.nsIDOMNSEvent.META_MASK) != 0,
      "evt.metaKey did not match expected value");
 
   if (evt.type == "MozTapGesture") {
     is(evt.clickCount, test_expectedClickCount, "evt.clickCount does not match");
   }
 
   test_eventCount++;
 }
@@ -153,29 +153,29 @@ function test_TestEventListeners()
   test_clicks("MozTapGesture", 2);
   test_clicks("MozTapGesture", 3);
   test_clicks("MozPressTapGesture", 1);
 
   // simple delivery test for edgeui gesture
   e("MozEdgeUIGesture", 0, 0, 0);
 
   // event.shiftKey
-  let modifier = Components.interfaces.nsIDOMEvent.SHIFT_MASK;
+  let modifier = Components.interfaces.nsIDOMNSEvent.SHIFT_MASK;
   e("MozSwipeGesture", SimpleGestureEvent.DIRECTION_RIGHT, 0, modifier);
 
   // event.metaKey
-  modifier = Components.interfaces.nsIDOMEvent.META_MASK;
+  modifier = Components.interfaces.nsIDOMNSEvent.META_MASK;
   e("MozSwipeGesture", SimpleGestureEvent.DIRECTION_RIGHT, 0, modifier);
 
   // event.altKey
-  modifier = Components.interfaces.nsIDOMEvent.ALT_MASK;
+  modifier = Components.interfaces.nsIDOMNSEvent.ALT_MASK;
   e("MozSwipeGesture", SimpleGestureEvent.DIRECTION_RIGHT, 0, modifier);
 
   // event.ctrlKey
-  modifier = Components.interfaces.nsIDOMEvent.CONTROL_MASK;
+  modifier = Components.interfaces.nsIDOMNSEvent.CONTROL_MASK;
   e("MozSwipeGesture", SimpleGestureEvent.DIRECTION_RIGHT, 0, modifier);
 }
 
 function test_eventDispatchListener(evt)
 {
   test_eventCount++;
   evt.stopPropagation();
 }
--- a/browser/components/sessionstore/src/Makefile.in
+++ b/browser/components/sessionstore/src/Makefile.in
@@ -3,32 +3,39 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DEPTH     = ../../../..
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
-include $(topsrcdir)/config/config.mk
 
 EXTRA_COMPONENTS = \
   nsSessionStore.manifest \
   $(NULL)
 
 EXTRA_PP_COMPONENTS = \
 	nsSessionStore.js \
 	nsSessionStartup.js \
 	$(NULL)
 
-JS_MODULES_PATH := $(FINAL_TARGET)/modules/sessionstore
+libs::
+	$(NSINSTALL) $(srcdir)/*.jsm $(FINAL_TARGET)/modules/sessionstore
 
-EXTRA_JS_MODULES := \
-  DocumentUtils.jsm \
-  SessionStorage.jsm \
-  XPathGenerator.jsm \
-  $(NULL)
-
-EXTRA_PP_JS_MODULES := \
+SS_EXTRA_PP_JS_MODULES = \
 	SessionStore.jsm \
 	$(NULL)
 
+ifdef SS_EXTRA_PP_JS_MODULES
+libs:: $(SS_EXTRA_PP_JS_MODULES)
+ifndef NO_DIST_INSTALL
+	$(EXIT_ON_ERROR) \
+	$(NSINSTALL) -D $(FINAL_TARGET)/modules/sessionstore; \
+	for i in $^; do \
+	  dest=$(FINAL_TARGET)/modules/sessionstore/`basename $$i`; \
+	  $(RM) -f $$dest; \
+	  $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
+	done
+endif
+endif
+
 include $(topsrcdir)/config/rules.mk
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -1379,35 +1379,32 @@ endif
 
 EXTRA_MANIFESTS = $(filter %.manifest,$(EXTRA_COMPONENTS) $(EXTRA_PP_COMPONENTS))
 ifneq (,$(EXTRA_MANIFESTS))
 libs::
 	$(PYTHON) $(MOZILLA_DIR)/config/buildlist.py $(FINAL_TARGET)/chrome.manifest $(patsubst %,"manifest components/%",$(notdir $(EXTRA_MANIFESTS)))
 endif
 
 ################################################################################
-# Copy each element of EXTRA_JS_MODULES to JS_MODULES_PATH, or
-# $(FINAL_TARGET)/modules if that isn't defined.
-JS_MODULES_PATH ?= $(FINAL_TARGET)/modules
-
+# Copy each element of EXTRA_JS_MODULES to $(FINAL_TARGET)/modules
 ifdef EXTRA_JS_MODULES
 libs:: $(EXTRA_JS_MODULES)
 ifndef NO_DIST_INSTALL
-	$(call install_cmd,$(IFLAGS1) $^ $(JS_MODULES_PATH))
+	$(call install_cmd,$(IFLAGS1) $^ $(FINAL_TARGET)/modules)
 endif
 
 endif
 
 ifdef EXTRA_PP_JS_MODULES
 libs:: $(EXTRA_PP_JS_MODULES)
 ifndef NO_DIST_INSTALL
 	$(EXIT_ON_ERROR) \
-	$(NSINSTALL) -D $(JS_MODULES_PATH); \
+	$(NSINSTALL) -D $(FINAL_TARGET)/modules; \
 	for i in $^; do \
-	  dest=$(JS_MODULES_PATH)/`basename $$i`; \
+	  dest=$(FINAL_TARGET)/modules/`basename $$i`; \
 	  $(RM) -f $$dest; \
 	  $(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $$i > $$dest; \
 	done
 endif
 
 endif
 
 ################################################################################
--- a/content/base/public/nsContentUtils.h
+++ b/content/base/public/nsContentUtils.h
@@ -2014,54 +2014,16 @@ public:
                                       nsAString& aValue);
 
   /**
    * Returns true if the language name is a version of JavaScript and
    * false otherwise
    */
   static bool IsJavaScriptLanguage(const nsString& aName, PRUint32 *aVerFlags);
 
-  /**
-   * Returns the JSVersion for a string of the form '1.n', n = 0, ..., 8, and
-   * JSVERSION_UNKNOWN for other strings.
-   */
-  static JSVersion ParseJavascriptVersion(const nsAString& aVersionStr);
-
-  static bool IsJavascriptMIMEType(const nsAString& aMIMEType)
-  {
-    // Table ordered from most to least likely JS MIME types.
-    static const char* jsTypes[] = {
-      "text/javascript",
-      "text/ecmascript",
-      "application/javascript",
-      "application/ecmascript",
-      "application/x-javascript",
-      "application/x-ecmascript",
-      "text/javascript1.0",
-      "text/javascript1.1",
-      "text/javascript1.2",
-      "text/javascript1.3",
-      "text/javascript1.4",
-      "text/javascript1.5",
-      "text/jscript",
-      "text/livescript",
-      "text/x-ecmascript",
-      "text/x-javascript",
-      nullptr
-    };
-
-    for (PRUint32 i = 0; jsTypes[i]; ++i) {
-      if (aMIMEType.LowerCaseEqualsASCII(jsTypes[i])) {
-        return true;
-      }
-    }
-
-    return false;
-  }
-
   static void SplitMimeType(const nsAString& aValue, nsString& aType,
                             nsString& aParams);
 
   /**
    * Function checks if the user is idle.
    * 
    * @param aRequestedIdleTimeInMS    The idle observer's requested idle time.
    * @param aUserIsIdle               boolean indicating if the user 
--- a/content/base/src/nsAttrAndChildArray.cpp
+++ b/content/base/src/nsAttrAndChildArray.cpp
@@ -439,18 +439,20 @@ nsAttrAndChildArray::RemoveAttrAt(PRUint
       // We're removing the last mapped attribute.  Can't swap in this
       // case; have to copy.
       aValue.SetTo(*mImpl->mMappedAttrs->AttrAt(0));
       NS_RELEASE(mImpl->mMappedAttrs);
 
       return NS_OK;
     }
 
-    nsRefPtr<nsMappedAttributes> mapped =
-      GetModifiableMapped(nullptr, nullptr, false);
+    nsRefPtr<nsMappedAttributes> mapped;
+    nsresult rv = GetModifiableMapped(nullptr, nullptr, false,
+                                      getter_AddRefs(mapped));
+    NS_ENSURE_SUCCESS(rv, rv);
 
     mapped->RemoveAttrAt(aPos, aValue);
 
     return MakeMappedUnique(mapped);
   }
 
   aPos -= mapped;
   ATTRS(mImpl)[aPos].mValue.SwapValueWith(aValue);
@@ -551,41 +553,46 @@ nsAttrAndChildArray::IndexOfAttr(nsIAtom
 }
 
 nsresult
 nsAttrAndChildArray::SetAndTakeMappedAttr(nsIAtom* aLocalName,
                                           nsAttrValue& aValue,
                                           nsMappedAttributeElement* aContent,
                                           nsHTMLStyleSheet* aSheet)
 {
+  nsRefPtr<nsMappedAttributes> mapped;
+
   bool willAdd = true;
   if (mImpl && mImpl->mMappedAttrs) {
-    willAdd = !mImpl->mMappedAttrs->GetAttr(aLocalName);
+    willAdd = mImpl->mMappedAttrs->GetAttr(aLocalName) == nullptr;
   }
 
-  nsRefPtr<nsMappedAttributes> mapped =
-    GetModifiableMapped(aContent, aSheet, willAdd);
+  nsresult rv = GetModifiableMapped(aContent, aSheet, willAdd,
+                                    getter_AddRefs(mapped));
+  NS_ENSURE_SUCCESS(rv, rv);
 
-  nsresult rv = mapped->SetAndTakeAttr(aLocalName, aValue);
+  rv = mapped->SetAndTakeAttr(aLocalName, aValue);
   NS_ENSURE_SUCCESS(rv, rv);
 
   return MakeMappedUnique(mapped);
 }
 
 nsresult
 nsAttrAndChildArray::DoSetMappedAttrStyleSheet(nsHTMLStyleSheet* aSheet)
 {
   NS_PRECONDITION(mImpl && mImpl->mMappedAttrs,
                   "Should have mapped attrs here!");
   if (aSheet == mImpl->mMappedAttrs->GetStyleSheet()) {
     return NS_OK;
   }
 
-  nsRefPtr<nsMappedAttributes> mapped =
-    GetModifiableMapped(nullptr, nullptr, false);
+  nsRefPtr<nsMappedAttributes> mapped;
+  nsresult rv = GetModifiableMapped(nullptr, nullptr, false, 
+                                    getter_AddRefs(mapped));
+  NS_ENSURE_SUCCESS(rv, rv);
 
   mapped->SetStyleSheet(aSheet);
 
   return MakeMappedUnique(mapped);
 }
 
 void
 nsAttrAndChildArray::WalkMappedAttributeStyleRules(nsRuleWalker* aRuleWalker)
@@ -685,30 +692,43 @@ nsAttrAndChildArray::NonMappedAttrCount(
 }
 
 PRUint32
 nsAttrAndChildArray::MappedAttrCount() const
 {
   return mImpl && mImpl->mMappedAttrs ? (PRUint32)mImpl->mMappedAttrs->Count() : 0;
 }
 
-nsMappedAttributes*
+nsresult
 nsAttrAndChildArray::GetModifiableMapped(nsMappedAttributeElement* aContent,
                                          nsHTMLStyleSheet* aSheet,
-                                         bool aWillAddAttr)
+                                         bool aWillAddAttr,
+                                         nsMappedAttributes** aModifiable)
 {
+  *aModifiable = nullptr;
+
   if (mImpl && mImpl->mMappedAttrs) {
-    return mImpl->mMappedAttrs->Clone(aWillAddAttr);
+    *aModifiable = mImpl->mMappedAttrs->Clone(aWillAddAttr);
+    NS_ENSURE_TRUE(*aModifiable, NS_ERROR_OUT_OF_MEMORY);
+
+    NS_ADDREF(*aModifiable);
+    
+    return NS_OK;
   }
 
-  MOZ_ASSERT(aContent, "Trying to create modifiable without content");
+  NS_ASSERTION(aContent, "Trying to create modifiable without content");
 
   nsMapRuleToAttributesFunc mapRuleFunc =
     aContent->GetAttributeMappingFunction();
-  return new nsMappedAttributes(aSheet, mapRuleFunc);
+  *aModifiable = new nsMappedAttributes(aSheet, mapRuleFunc);
+  NS_ENSURE_TRUE(*aModifiable, NS_ERROR_OUT_OF_MEMORY);
+
+  NS_ADDREF(*aModifiable);
+
+  return NS_OK;
 }
 
 nsresult
 nsAttrAndChildArray::MakeMappedUnique(nsMappedAttributes* aAttributes)
 {
   NS_ASSERTION(aAttributes, "missing attributes");
 
   if (!mImpl && !GrowBy(1)) {
--- a/content/base/src/nsAttrAndChildArray.h
+++ b/content/base/src/nsAttrAndChildArray.h
@@ -122,21 +122,20 @@ private:
   nsAttrAndChildArray(const nsAttrAndChildArray& aOther) MOZ_DELETE;
   nsAttrAndChildArray& operator=(const nsAttrAndChildArray& aOther) MOZ_DELETE;
 
   void Clear();
 
   PRUint32 NonMappedAttrCount() const;
   PRUint32 MappedAttrCount() const;
 
-  // Returns a non-null zero-refcount object.
-  nsMappedAttributes*
-  GetModifiableMapped(nsMappedAttributeElement* aContent,
-                      nsHTMLStyleSheet* aSheet,
-                      bool aWillAddAttr);
+  nsresult GetModifiableMapped(nsMappedAttributeElement* aContent,
+                               nsHTMLStyleSheet* aSheet,
+                               bool aWillAddAttr,
+                               nsMappedAttributes** aModifiable);
   nsresult MakeMappedUnique(nsMappedAttributes* aAttributes);
 
   PRUint32 AttrSlotsSize() const
   {
     return AttrSlotCount() * ATTRSIZE;
   }
 
   PRUint32 AttrSlotCount() const
--- a/content/base/src/nsContentAreaDragDrop.cpp
+++ b/content/base/src/nsContentAreaDragDrop.cpp
@@ -14,16 +14,17 @@
 // Interfaces needed to be included
 #include "nsCopySupport.h"
 #include "nsIDOMUIEvent.h"
 #include "nsISelection.h"
 #include "nsISelectionController.h"
 #include "nsIDOMNode.h"
 #include "nsIDOMNodeList.h"
 #include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsIDOMDragEvent.h"
 #include "nsPIDOMWindow.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMRange.h"
 #include "nsIFormControl.h"
 #include "nsIDOMHTMLAreaElement.h"
 #include "nsIDOMHTMLAnchorElement.h"
 #include "nsITransferable.h"
@@ -51,17 +52,17 @@
 #include "imgIContainer.h"
 #include "imgIRequest.h"
 #include "nsDOMDataTransfer.h"
 #include "mozilla/dom/Element.h"
 
 class NS_STACK_CLASS DragDataProducer
 {
 public:
-  DragDataProducer(nsPIDOMWindow* aWindow,
+  DragDataProducer(nsIDOMWindow* aWindow,
                    nsIContent* aTarget,
                    nsIContent* aSelectionTargetNode,
                    bool aIsAltKeyPressed);
   nsresult Produce(nsDOMDataTransfer* aDataTransfer,
                    bool* aCanDrag,
                    nsISelection** aSelection,
                    nsIContent** aDragNode);
 
@@ -79,17 +80,17 @@ private:
   static already_AddRefed<nsIContent> FindParentLinkNode(nsIContent* inNode);
   static void GetAnchorURL(nsIContent* inNode, nsAString& outURL);
   static void GetNodeString(nsIContent* inNode, nsAString & outNodeString);
   static void CreateLinkText(const nsAString& inURL, const nsAString & inText,
                               nsAString& outLinkText);
   static void GetSelectedLink(nsISelection* inSelection,
                               nsIContent **outLinkNode);
 
-  nsCOMPtr<nsPIDOMWindow> mWindow;
+  nsCOMPtr<nsIDOMWindow> mWindow;
   nsCOMPtr<nsIContent> mTarget;
   nsCOMPtr<nsIContent> mSelectionTargetNode;
   bool mIsAltKeyPressed;
 
   nsString mUrlString;
   nsString mImageSourceString;
   nsString mImageDestFileName;
   nsString mTitleString;
@@ -99,17 +100,17 @@ private:
   nsString mInfoString;
 
   bool mIsAnchor;
   nsCOMPtr<imgIContainer> mImage;
 };
 
 
 nsresult
-nsContentAreaDragDrop::GetDragData(nsPIDOMWindow* aWindow,
+nsContentAreaDragDrop::GetDragData(nsIDOMWindow* aWindow,
                                    nsIContent* aTarget,
                                    nsIContent* aSelectionTargetNode,
                                    bool aIsAltKeyPressed,
                                    nsDOMDataTransfer* aDataTransfer,
                                    bool* aCanDrag,
                                    nsISelection** aSelection,
                                    nsIContent** aDragNode)
 {
@@ -233,17 +234,17 @@ nsContentAreaDragDropDataProvider::GetFl
       CallQueryInterface(file, aData);
       *aDataLen = sizeof(nsIFile*);
     }
   }
 
   return rv;
 }
 
-DragDataProducer::DragDataProducer(nsPIDOMWindow* aWindow,
+DragDataProducer::DragDataProducer(nsIDOMWindow* aWindow,
                                    nsIContent* aTarget,
                                    nsIContent* aSelectionTargetNode,
                                    bool aIsAltKeyPressed)
   : mWindow(aWindow),
     mTarget(aTarget),
     mSelectionTargetNode(aSelectionTargetNode),
     mIsAltKeyPressed(aIsAltKeyPressed),
     mIsAnchor(false)
@@ -643,17 +644,19 @@ DragDataProducer::Produce(nsDOMDataTrans
   }
 
   if (nodeToSerialize || *aSelection) {
     mHtmlString.Truncate();
     mContextString.Truncate();
     mInfoString.Truncate();
     mTitleString.Truncate();
 
-    nsCOMPtr<nsIDocument> doc = mWindow->GetDoc();
+    nsCOMPtr<nsIDOMDocument> domDoc;
+    mWindow->GetDocument(getter_AddRefs(domDoc));
+    nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc);
     NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE);
 
     // if we have selected text, use it in preference to the node
     nsCOMPtr<nsITransferable> transferable;
     if (*aSelection) {
       rv = nsCopySupport::GetTransferableForSelection(*aSelection, doc,
                                                       getter_AddRefs(transferable));
     }
--- a/content/base/src/nsContentAreaDragDrop.h
+++ b/content/base/src/nsContentAreaDragDrop.h
@@ -9,17 +9,17 @@
 
 #include "nsCOMPtr.h"
 
 #include "nsIDOMEventTarget.h"
 #include "nsIDOMEventListener.h"
 #include "nsITransferable.h"
 
 class nsIDOMNode;
-class nsPIDOMWindow;
+class nsIDOMWindow;
 class nsIDOMDragEvent;
 class nsISelection;
 class nsITransferable;
 class nsIContent;
 class nsIURI;
 class nsIFile;
 class nsISimpleEnumerator;
 class nsDOMDataTransfer;
@@ -44,17 +44,17 @@ public:
    * aDataTransfer - the dataTransfer for the drag event.
    * aCanDrag - [out] set to true if the drag may proceed, false to stop the
    *            drag entirely
    * aSelection - [out] set to the selection being dragged, or null if no
    *                    selection is being dragged.
    * aDragNode - [out] the link, image or area being dragged, or null if the
    *             drag occurred on another element.
    */
-  static nsresult GetDragData(nsPIDOMWindow* aWindow,
+  static nsresult GetDragData(nsIDOMWindow* aWindow,
                               nsIContent* aTarget,
                               nsIContent* aSelectionTargetNode,
                               bool aIsAltKeyPressed,
                               nsDOMDataTransfer* aDataTransfer,
                               bool* aCanDrag,
                               nsISelection** aSelection,
                               nsIContent** aDragNode);
 };
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -83,16 +83,17 @@ static NS_DEFINE_CID(kXTFServiceCID, NS_
 #include "nsAttrName.h"
 #include "nsIDOMUserDataHandler.h"
 #include "nsContentCreatorFunctions.h"
 #include "nsMutationEvent.h"
 #include "nsIMEStateManager.h"
 #include "nsContentErrors.h"
 #include "nsUnicharUtilCIID.h"
 #include "nsINativeKeyBindings.h"
+#include "nsIDOMNSEvent.h"
 #include "nsXULPopupManager.h"
 #include "nsIPermissionManager.h"
 #include "nsIScriptObjectPrincipal.h"
 #include "nsNullPrincipal.h"
 #include "nsIRunnable.h"
 #include "nsDOMJSUtils.h"
 #include "nsGenericHTMLElement.h"
 #include "nsAttrValue.h"
@@ -839,38 +840,16 @@ nsContentUtils::IsJavaScriptLanguage(con
 
   if (version == JSVERSION_UNKNOWN) {
     return false;
   }
   *aFlags = version;
   return true;
 }
 
-JSVersion
-nsContentUtils::ParseJavascriptVersion(const nsAString& aVersionStr)
-{
-  if (aVersionStr.Length() != 3 || aVersionStr[0] != '1' ||
-      aVersionStr[1] != '.') {
-    return JSVERSION_UNKNOWN;
-  }
-
-  switch (aVersionStr[2]) {
-  case '0': return JSVERSION_1_0;
-  case '1': return JSVERSION_1_1;
-  case '2': return JSVERSION_1_2;
-  case '3': return JSVERSION_1_3;
-  case '4': return JSVERSION_1_4;
-  case '5': return JSVERSION_1_5;
-  case '6': return JSVERSION_1_6;
-  case '7': return JSVERSION_1_7;
-  case '8': return JSVERSION_1_8;
-  default:  return JSVERSION_UNKNOWN;
-  }
-}
-
 void
 nsContentUtils::SplitMimeType(const nsAString& aValue, nsString& aType,
                               nsString& aParams)
 {
   aType.Truncate();
   aParams.Truncate();
   PRInt32 semiIndex = aValue.FindChar(PRUnichar(';'));
   if (-1 != semiIndex) {
@@ -4683,23 +4662,24 @@ nsContentUtils::GetNativeEvent(nsIDOMEve
 }
 
 //static
 bool
 nsContentUtils::DOMEventToNativeKeyEvent(nsIDOMKeyEvent* aKeyEvent,
                                          nsNativeKeyEvent* aNativeEvent,
                                          bool aGetCharCode)
 {
+  nsCOMPtr<nsIDOMNSEvent> nsevent = do_QueryInterface(aKeyEvent);
   bool defaultPrevented;
-  aKeyEvent->GetPreventDefault(&defaultPrevented);
+  nsevent->GetPreventDefault(&defaultPrevented);
   if (defaultPrevented)
     return false;
 
   bool trusted = false;
-  aKeyEvent->GetIsTrusted(&trusted);
+  nsevent->GetIsTrusted(&trusted);
   if (!trusted)
     return false;
 
   if (aGetCharCode) {
     aKeyEvent->GetCharCode(&aNativeEvent->charCode);
   } else {
     aNativeEvent->charCode = 0;
   }
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -2257,58 +2257,63 @@ nsDocument::ResetStylesheetsToURI(nsIURI
 
   // Release all the sheets
   mStyleSheets.Clear();
   // NOTE:  We don't release the catalog sheets.  It doesn't really matter
   // now, but it could in the future -- in which case not releasing them
   // is probably the right thing to do.
 
   // Now reset our inline style and attribute sheets.
+  nsresult rv = NS_OK;
   if (mAttrStyleSheet) {
     // Remove this sheet from all style sets
     nsCOMPtr<nsIPresShell> shell = GetShell();
     if (shell) {
       shell->StyleSet()->RemoveStyleSheet(nsStyleSet::ePresHintSheet,
                                           mAttrStyleSheet);
     }
     mAttrStyleSheet->Reset(aURI);
   } else {
-    mAttrStyleSheet = new nsHTMLStyleSheet(aURI, this);
-    NS_ADDREF(mAttrStyleSheet);
+    rv = NS_NewHTMLStyleSheet(&mAttrStyleSheet, aURI, this);
+    if (NS_FAILED(rv)) {
+      NS_IF_RELEASE(mAttrStyleSheet);
+      NS_ENSURE_SUCCESS(rv, rv);
+    }
   }
 
   // Don't use AddStyleSheet, since it'll put the sheet into style
   // sets in the document level, which is not desirable here.
   mAttrStyleSheet->SetOwningDocument(this);
   
   if (mStyleAttrStyleSheet) {
     // Remove this sheet from all style sets
     nsCOMPtr<nsIPresShell> shell = GetShell();
     if (shell) {
       shell->StyleSet()->
         RemoveStyleSheet(nsStyleSet::eStyleAttrSheet, mStyleAttrStyleSheet);
     }
     mStyleAttrStyleSheet->Reset(aURI);
   } else {
     mStyleAttrStyleSheet = new nsHTMLCSSStyleSheet();
-    nsresult rv = mStyleAttrStyleSheet->Init(aURI, this);
+    NS_ENSURE_TRUE(mStyleAttrStyleSheet, NS_ERROR_OUT_OF_MEMORY);
+    rv = mStyleAttrStyleSheet->Init(aURI, this);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   // The loop over style sets below will handle putting this sheet
   // into style sets as needed.
   mStyleAttrStyleSheet->SetOwningDocument(this);
 
   // Now set up our style sets
   nsCOMPtr<nsIPresShell> shell = GetShell();
   if (shell) {
     FillStyleSet(shell->StyleSet());
   }
 
-  return NS_OK;
+  return rv;
 }
 
 void
 nsDocument::FillStyleSet(nsStyleSet* aStyleSet)
 {
   NS_PRECONDITION(aStyleSet, "Must have a style set");
   NS_PRECONDITION(aStyleSet->SheetCount(nsStyleSet::ePresHintSheet) == 0,
                   "Style set already has a preshint sheet?");
@@ -6409,77 +6414,52 @@ nsDocument::IsScriptEnabled()
 
   bool enabled;
   nsresult rv = sm->CanExecuteScripts(cx, NodePrincipal(), &enabled);
   NS_ENSURE_SUCCESS(rv, false);
   return enabled;
 }
 
 nsRadioGroupStruct*
-nsDocument::GetRadioGroupInternal(const nsAString& aName) const
-{
-#ifdef DEBUG
-  if (IsHTML()) {
-    nsAutoString lcName;
-    ToLowerCase(aName, lcName);
-    MOZ_ASSERT(aName == lcName);
-  }
-#endif
-
-  nsRadioGroupStruct* radioGroup;
-  if (!mRadioGroups.Get(aName, &radioGroup)) {
-    return nullptr;
-  }
-
-  return radioGroup;
-}
-
-nsRadioGroupStruct*
-nsDocument::GetRadioGroup(const nsAString& aName) const
+nsDocument::GetRadioGroup(const nsAString& aName)
 {
   nsAutoString tmKey(aName);
   if (IsHTML()) {
     ToLowerCase(tmKey); //should case-insensitive.
   }
 
-  return GetRadioGroupInternal(tmKey);
-}
-
-nsRadioGroupStruct*
-nsDocument::GetOrCreateRadioGroup(const nsAString& aName)
-{
-  nsAutoString tmKey(aName);
-  if (IsHTML()) {
-    ToLowerCase(tmKey); //should case-insensitive.
-  }
-
-  if (nsRadioGroupStruct* radioGroup = GetRadioGroupInternal(tmKey)) {
+  nsRadioGroupStruct* radioGroup;
+  if (mRadioGroups.Get(tmKey, &radioGroup)) {
     return radioGroup;
   }
 
   nsAutoPtr<nsRadioGroupStruct> newRadioGroup(new nsRadioGroupStruct());
   mRadioGroups.Put(tmKey, newRadioGroup);
 
   return newRadioGroup.forget();
 }
 
 NS_IMETHODIMP
 nsDocument::SetCurrentRadioButton(const nsAString& aName,
                                   nsIDOMHTMLInputElement* aRadio)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  NS_ENSURE_TRUE(radioGroup, NS_OK);
+
   radioGroup->mSelectedRadioButton = aRadio;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocument::GetCurrentRadioButton(const nsAString& aName,
                                   nsIDOMHTMLInputElement** aRadio)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  NS_ENSURE_TRUE(radioGroup, NS_OK);
+
   *aRadio = radioGroup->mSelectedRadioButton;
   NS_IF_ADDREF(*aRadio);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocument::GetNextRadioButton(const nsAString& aName,
                                const bool aPrevious,
@@ -6487,17 +6467,18 @@ nsDocument::GetNextRadioButton(const nsA
                                nsIDOMHTMLInputElement** aRadioOut)
 {
   // XXX Can we combine the HTML radio button method impls of 
   //     nsDocument and nsHTMLFormControl?
   // XXX Why is HTML radio button stuff in nsDocument, as 
   //     opposed to nsHTMLDocument?
   *aRadioOut = nullptr;
 
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  NS_ENSURE_TRUE(radioGroup, NS_ERROR_FAILURE);
 
   // Return the radio button relative to the focused radio button.
   // If no radio is focused, get the radio relative to the selected one.
   nsCOMPtr<nsIDOMHTMLInputElement> currentRadio;
   if (aFocusedRadio) {
     currentRadio = aFocusedRadio;
   }
   else {
@@ -6532,33 +6513,35 @@ nsDocument::GetNextRadioButton(const nsA
   NS_IF_ADDREF(*aRadioOut = radio);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocument::AddToRadioGroup(const nsAString& aName,
                             nsIFormControl* aRadio)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  NS_ENSURE_TRUE(radioGroup, NS_OK);
 
   radioGroup->mRadioButtons.AppendObject(aRadio);
 
   nsCOMPtr<nsIContent> element = do_QueryInterface(aRadio);
   NS_ASSERTION(element, "radio controls have to be content elements");
   if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::required)) {
     radioGroup->mRequiredRadioCount++;
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocument::RemoveFromRadioGroup(const nsAString& aName,
                                  nsIFormControl* aRadio)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  NS_ENSURE_TRUE(radioGroup, NS_OK);
 
   radioGroup->mRadioButtons.RemoveObject(aRadio);
 
   nsCOMPtr<nsIContent> element = do_QueryInterface(aRadio);
   NS_ASSERTION(element, "radio controls have to be content elements");
   if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::required)) {
     NS_ASSERTION(radioGroup->mRequiredRadioCount != 0,
                  "mRequiredRadioCount about to wrap below 0!");
@@ -6567,61 +6550,87 @@ nsDocument::RemoveFromRadioGroup(const n
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocument::WalkRadioGroup(const nsAString& aName,
                            nsIRadioVisitor* aVisitor,
                            bool aFlushContent)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  NS_ENSURE_TRUE(radioGroup, NS_OK);
 
   for (int i = 0; i < radioGroup->mRadioButtons.Count(); i++) {
     if (!aVisitor->Visit(radioGroup->mRadioButtons[i])) {
       return NS_OK;
     }
   }
 
   return NS_OK;
 }
 
 PRUint32
 nsDocument::GetRequiredRadioCount(const nsAString& aName) const
 {
-  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = nullptr;
+  // TODO: we should call GetRadioGroup here (and make it const) but for that
+  // we would need to have an explicit CreateRadioGroup() instead of create
+  // one when GetRadioGroup is called. See bug 636123.
+  nsAutoString tmKey(aName);
+  if (IsHTML())
+     ToLowerCase(tmKey); //should case-insensitive.
+  mRadioGroups.Get(tmKey, &radioGroup);
+
   return radioGroup ? radioGroup->mRequiredRadioCount : 0;
 }
 
 void
 nsDocument::RadioRequiredChanged(const nsAString& aName, nsIFormControl* aRadio)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+
+  if (!radioGroup) {
+    return;
+  }
 
   nsCOMPtr<nsIContent> element = do_QueryInterface(aRadio);
   NS_ASSERTION(element, "radio controls have to be content elements");
   if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::required)) {
     radioGroup->mRequiredRadioCount++;
   } else {
     NS_ASSERTION(radioGroup->mRequiredRadioCount != 0,
                  "mRequiredRadioCount about to wrap below 0!");
     radioGroup->mRequiredRadioCount--;
   }
 }
 
 bool
 nsDocument::GetValueMissingState(const nsAString& aName) const
 {
-  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = nullptr;
+  // TODO: we should call GetRadioGroup here (and make it const) but for that
+  // we would need to have an explicit CreateRadioGroup() instead of create
+  // one when GetRadioGroup is called. See bug 636123.
+  nsAutoString tmKey(aName);
+  if (IsHTML())
+     ToLowerCase(tmKey); //should case-insensitive.
+  mRadioGroups.Get(tmKey, &radioGroup);
+
   return radioGroup && radioGroup->mGroupSuffersFromValueMissing;
 }
 
 void
 nsDocument::SetValueMissingState(const nsAString& aName, bool aValue)
 {
-  nsRadioGroupStruct* radioGroup = GetOrCreateRadioGroup(aName);
+  nsRadioGroupStruct* radioGroup = GetRadioGroup(aName);
+
+  if (!radioGroup) {
+    return;
+  }
+
   radioGroup->mGroupSuffersFromValueMissing = aValue;
 }
 
 void
 nsDocument::RetrieveRelevantHeaders(nsIChannel *aChannel)
 {
   nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(aChannel);
   PRTime modDate = LL_ZERO;
--- a/content/base/src/nsDocument.h
+++ b/content/base/src/nsDocument.h
@@ -718,23 +718,18 @@ public:
                                   nsIFormControl* aRadio);
   virtual PRUint32 GetRequiredRadioCount(const nsAString& aName) const;
   virtual void RadioRequiredChanged(const nsAString& aName,
                                     nsIFormControl* aRadio);
   virtual bool GetValueMissingState(const nsAString& aName) const;
   virtual void SetValueMissingState(const nsAString& aName, bool aValue);
 
   // for radio group
-  nsRadioGroupStruct* GetRadioGroup(const nsAString& aName) const;
-  nsRadioGroupStruct* GetOrCreateRadioGroup(const nsAString& aName);
+  nsRadioGroupStruct* GetRadioGroup(const nsAString& aName);
 
-private:
-  nsRadioGroupStruct* GetRadioGroupInternal(const nsAString& aName) const;
-
-public:
   // nsIDOMNode
   NS_DECL_NSIDOMNODE
 
   // nsIDOMDocument
   NS_DECL_NSIDOMDOCUMENT
 
   // nsIDOMXMLDocument
   NS_DECL_NSIDOMXMLDOCUMENT
--- a/content/base/src/nsINode.cpp
+++ b/content/base/src/nsINode.cpp
@@ -432,21 +432,20 @@ nsINode::GetOwnerDocument(nsIDOMDocument
 nsresult
 nsINode::RemoveChild(nsINode *aOldChild)
 {
   if (!aOldChild) {
     return NS_ERROR_NULL_POINTER;
   }
 
   if (IsNodeOfType(eDATA_NODE)) {
-    // aOldChild can't be one of our children.
-    return NS_ERROR_DOM_NOT_FOUND_ERR;
+    return NS_ERROR_DOM_HIERARCHY_REQUEST_ERR;
   }
 
-  if (aOldChild->GetNodeParent() == this) {
+  if (aOldChild && aOldChild->GetNodeParent() == this) {
     nsContentUtils::MaybeFireNodeRemoved(aOldChild, this, OwnerDoc());
   }
 
   PRInt32 index = IndexOf(aOldChild);
   if (index == -1) {
     // aOldChild isn't one of our children.
     return NS_ERROR_DOM_NOT_FOUND_ERR;
   }
--- a/content/base/src/nsMappedAttributes.cpp
+++ b/content/base/src/nsMappedAttributes.cpp
@@ -63,17 +63,19 @@ void* nsMappedAttributes::operator new(s
 {
   NS_ASSERTION(aAttrCount > 0, "zero-attribute nsMappedAttributes requested");
 
   // aSize will include the mAttrs buffer so subtract that.
   void* newAttrs = ::operator new(aSize - sizeof(void*[1]) +
                                   aAttrCount * sizeof(InternalAttr));
 
 #ifdef DEBUG
-  static_cast<nsMappedAttributes*>(newAttrs)->mBufferSize = aAttrCount;
+  if (newAttrs) {
+    static_cast<nsMappedAttributes*>(newAttrs)->mBufferSize = aAttrCount;
+  }
 #endif
 
   return newAttrs;
 }
 
 NS_IMPL_ISUPPORTS1(nsMappedAttributes,
                    nsIStyleRule)
 
--- a/content/base/src/nsMappedAttributes.h
+++ b/content/base/src/nsMappedAttributes.h
@@ -21,18 +21,18 @@ class nsHTMLStyleSheet;
 class nsRuleWalker;
 
 class nsMappedAttributes MOZ_FINAL : public nsIStyleRule
 {
 public:
   nsMappedAttributes(nsHTMLStyleSheet* aSheet,
                      nsMapRuleToAttributesFunc aMapRuleFunc);
 
-  // Do not return null.
   void* operator new(size_t size, PRUint32 aAttrCount = 1) CPP_THROW_NEW;
+
   nsMappedAttributes* Clone(bool aWillAddAttr);
 
   NS_DECL_ISUPPORTS
 
   nsresult SetAndTakeAttr(nsIAtom* aAttrName, nsAttrValue& aValue);
   const nsAttrValue* GetAttr(nsIAtom* aAttrName) const;
   const nsAttrValue* GetAttr(const nsAString& aAttrName) const;
 
--- a/content/base/src/nsRange.cpp
+++ b/content/base/src/nsRange.cpp
@@ -1834,17 +1834,17 @@ nsRange::CompareBoundaryPoints(PRUint16 
     case nsIDOMRange::END_TO_END:
       ourNode = mEndParent;
       ourOffset = mEndOffset;
       otherNode = otherRange->GetEndParent();
       otherOffset = otherRange->EndOffset();
       break;
     default:
       // We were passed an illegal value
-      return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
+      return NS_ERROR_ILLEGAL_VALUE;
   }
 
   if (mRoot != otherRange->GetRoot())
     return NS_ERROR_DOM_WRONG_DOCUMENT_ERR;
 
   *aCmpRet = nsContentUtils::ComparePoints(ourNode, ourOffset,
                                            otherNode, otherOffset);
 
--- a/content/base/src/nsScriptLoader.cpp
+++ b/content/base/src/nsScriptLoader.cpp
@@ -347,60 +347,16 @@ public:
     , mRequest(aRequest)
   {}
   NS_IMETHODIMP Run()
   {
     return mLoader->ProcessRequest(mRequest);
   }
 };
 
-static inline bool
-ParseTypeAttribute(const nsAString& aType, JSVersion* aVersion)
-{
-  MOZ_ASSERT(!aType.IsEmpty());
-  MOZ_ASSERT(aVersion);
-  MOZ_ASSERT(*aVersion == JSVERSION_DEFAULT);
-
-  nsContentTypeParser parser(aType);
-
-  nsAutoString mimeType;
-  nsresult rv = parser.GetType(mimeType);
-  NS_ENSURE_SUCCESS(rv, false);
-
-  if (!nsContentUtils::IsJavascriptMIMEType(mimeType)) {
-    return false;
-  }
-
-  // Get the version string, and ensure the language supports it.
-  nsAutoString versionName;
-  rv = parser.GetParameter("version", versionName);
-
-  if (NS_SUCCEEDED(rv)) {
-    *aVersion = nsContentUtils::ParseJavascriptVersion(versionName);
-  } else if (rv != NS_ERROR_INVALID_ARG) {
-    return false;
-  }
-
-  nsAutoString value;
-  rv = parser.GetParameter("e4x", value);
-  if (NS_SUCCEEDED(rv)) {
-    if (value.Length() == 1 && value[0] == '1') {
-      // This happens in about 2 web pages. Enable E4X no matter what JS
-      // version number was selected.  We do this by turning on the "moar
-      // XML" version bit.  This is OK even if version has
-      // JSVERSION_UNKNOWN (-1).
-      *aVersion = js::VersionSetMoarXML(*aVersion, true);
-    }
-  } else if (rv != NS_ERROR_INVALID_ARG) {
-    return false;
-  }
-
-  return true;
-}
-
 bool
 nsScriptLoader::ProcessScriptElement(nsIScriptElement *aElement)
 {
   // We need a document to evaluate scripts.
   NS_ENSURE_TRUE(mDocument, false);
 
   // Check to see if scripts has been turned off.
   if (!mEnabled || !mDocument->IsScriptEnabled()) {
@@ -432,48 +388,136 @@ nsScriptLoader::ProcessScriptElement(nsI
   nsIScriptContext *context = globalObject->GetScriptContext();
 
   // If scripts aren't enabled in the current context, there's no
   // point in going on.
   if (!context || !context->GetScriptsEnabled()) {
     return false;
   }
 
-  JSVersion version = JSVERSION_DEFAULT;
+  PRUint32 typeID = nsIProgrammingLanguage::JAVASCRIPT;
+  PRUint32 version = 0;
+  nsAutoString language, type, src;
+  nsresult rv = NS_OK;
 
   // Check the type attribute to determine language and version.
   // If type exists, it trumps the deprecated 'language='
-  nsAutoString type;
   aElement->GetScriptType(type);
   if (!type.IsEmpty()) {
-    NS_ENSURE_TRUE(ParseTypeAttribute(type, &version), false);
+    nsContentTypeParser parser(type);
+
+    nsAutoString mimeType;
+    rv = parser.GetType(mimeType);
+    NS_ENSURE_SUCCESS(rv, false);
+
+    // Javascript keeps the fast path, optimized for most-likely type
+    // Table ordered from most to least likely JS MIME types.
+    // See bug 62485, feel free to add <script type="..."> survey data to it,
+    // or to a new bug once 62485 is closed.
+    static const char *jsTypes[] = {
+      "text/javascript",
+      "text/ecmascript",
+      "application/javascript",
+      "application/ecmascript",
+      "application/x-javascript",
+      nullptr
+    };
+
+    bool isJavaScript = false;
+    for (PRInt32 i = 0; jsTypes[i]; i++) {
+      if (mimeType.LowerCaseEqualsASCII(jsTypes[i])) {
+        isJavaScript = true;
+        break;
+      }
+    }
+
+    if (!isJavaScript) {
+      typeID = nsIProgrammingLanguage::UNKNOWN;
+    }
+
+    if (typeID != nsIProgrammingLanguage::UNKNOWN) {
+      // Get the version string, and ensure the language supports it.
+      nsAutoString versionName;
+      rv = parser.GetParameter("version", versionName);
+      if (NS_FAILED(rv)) {
+        // no version attribute - version remains 0.
+        if (rv != NS_ERROR_INVALID_ARG)
+          return false;
+      } else {
+        nsCOMPtr<nsIScriptRuntime> runtime;
+        rv = NS_GetJSRuntime(getter_AddRefs(runtime));
+        if (NS_FAILED(rv)) {
+          NS_ERROR("Failed to locate the language with this ID");
+          return false;
+        }
+        rv = runtime->ParseVersion(versionName, &version);
+        if (NS_FAILED(rv)) {
+          NS_WARNING("This script language version is not supported - ignored");
+          typeID = nsIProgrammingLanguage::UNKNOWN;
+        }
+      }
+    }
+
+    // Some js specifics yet to be abstracted.
+    if (typeID == nsIProgrammingLanguage::JAVASCRIPT) {
+      nsAutoString value;
+      rv = parser.GetParameter("e4x", value);
+      if (NS_FAILED(rv)) {
+        if (rv != NS_ERROR_INVALID_ARG)
+          return false;
+      } else {
+        if (value.Length() == 1 && value[0] == '1')
+          // This happens in about 2 web pages. Enable E4X no matter what JS
+          // version number was selected.  We do this by turning on the "moar
+          // XML" version bit.  This is OK even if version has
+          // JSVERSION_UNKNOWN (-1).
+          version = js::VersionSetMoarXML(JSVersion(version), true);
+      }
+    }
   } else {
     // no 'type=' element
     // "language" is a deprecated attribute of HTML, so we check it only for
     // HTML script elements.
     if (scriptContent->IsHTML()) {
-      nsAutoString language;
       scriptContent->GetAttr(kNameSpaceID_None, nsGkAtoms::language, language);
       if (!language.IsEmpty()) {
+        if (nsContentUtils::IsJavaScriptLanguage(language, &version))
+          typeID = nsIProgrammingLanguage::JAVASCRIPT;
+        else
+          typeID = nsIProgrammingLanguage::UNKNOWN;
         // IE, Opera, etc. do not respect language version, so neither should
         // we at this late date in the browser wars saga.  Note that this change
         // affects HTML but not XUL or SVG (but note also that XUL has its own
         // code to check nsContentUtils::IsJavaScriptLanguage -- that's probably
         // a separate bug, one we may not be able to fix short of XUL2).  See
         // bug 255895 (https://bugzilla.mozilla.org/show_bug.cgi?id=255895).
-        PRUint32 dummy;
-        if (!nsContentUtils::IsJavaScriptLanguage(language, &dummy)) {
-          return false;
-        }
+        NS_ASSERTION(JSVERSION_DEFAULT == 0,
+                     "We rely on all languages having 0 as a version default");
+        version = 0;
       }
     }
   }
 
+  // If we don't know the language, we don't know how to evaluate
+  if (typeID == nsIProgrammingLanguage::UNKNOWN) {
+    return false;
+  }
+  // If not from a chrome document (which is always trusted), we need some way 
+  // of checking the language is "safe".  Currently the only other language 
+  // impl is Python, and that is *not* safe in untrusted code - so fixing 
+  // this isn't a priority.!
+  // See also similar code in nsXULContentSink.cpp
+  if (typeID != nsIProgrammingLanguage::JAVASCRIPT &&
+      !nsContentUtils::IsChromeDoc(mDocument)) {
+    NS_WARNING("Untrusted language called from non-chrome - ignored");
+    return false;
+  }
+
   // Step 14. in the HTML5 spec
-  nsresult rv = NS_OK;
+
   nsRefPtr<nsScriptLoadRequest> request;
   if (aElement->GetScriptExternal()) {
     // external script
     nsCOMPtr<nsIURI> scriptURI = aElement->GetScriptURI();
     if (!scriptURI) {
       return false;
     }
     CORSMode ourCORSMode = aElement->GetCORSMode();
--- a/content/base/src/nsTreeSanitizer.cpp
+++ b/content/base/src/nsTreeSanitizer.cpp
@@ -1115,17 +1115,19 @@ nsTreeSanitizer::SanitizeStyleSheet(cons
                                     nsIURI* aBaseURI)
 {
   nsresult rv;
   aSanitized.Truncate();
   // aSanitized will hold the permitted CSS text.
   // -moz-binding is blacklisted.
   bool didSanitize = false;
   // Create a sheet to hold the parsed CSS
-  nsRefPtr<nsCSSStyleSheet> sheet = new nsCSSStyleSheet();
+  nsRefPtr<nsCSSStyleSheet> sheet;
+  rv = NS_NewCSSStyleSheet(getter_AddRefs(sheet));
+  NS_ENSURE_SUCCESS(rv, true);
   sheet->SetURIs(aDocument->GetDocumentURI(), nullptr, aBaseURI);
   sheet->SetPrincipal(aDocument->NodePrincipal());
   // Create the CSS parser, and parse the CSS text.
   nsCSSParser parser(nullptr, sheet);
   rv = parser.ParseSheet(aOriginal, aDocument->GetDocumentURI(), aBaseURI,
                          aDocument->NodePrincipal(), 0, false);
   NS_ENSURE_SUCCESS(rv, true);
   // Mark the sheet as complete.
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -3170,63 +3170,61 @@ nsXMLHttpRequest::Send(nsIVariant* aVari
   if (!mChannel) {
     return NS_ERROR_FAILURE;
   }
 
   return rv;
 }
 
 /* void setRequestHeader (in AUTF8String header, in AUTF8String value); */
-// http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-setrequestheader
 NS_IMETHODIMP
 nsXMLHttpRequest::SetRequestHeader(const nsACString& header,
                                    const nsACString& value)
 {
-  // Step 1 and 2
-  if (!(mState & XML_HTTP_REQUEST_OPENED)) {
-    return NS_ERROR_DOM_INVALID_STATE_ERR;
-  }
-  NS_ASSERTION(mChannel, "mChannel must be valid if we're OPENED.");
-
-  // Step 3
+  nsresult rv;
+
   // Make sure we don't store an invalid header name in mCORSUnsafeHeaders
-  if (!IsValidHTTPToken(header)) { // XXX nsHttp::IsValidToken?
-    return NS_ERROR_DOM_SYNTAX_ERR;
+  if (!IsValidHTTPToken(header)) {
+    return NS_ERROR_FAILURE;
   }
 
   // Check that we haven't already opened the channel. We can't rely on
   // the channel throwing from mChannel->SetRequestHeader since we might
   // still be waiting for mCORSPreflightChannel to actually open mChannel
   if (mCORSPreflightChannel) {
     bool pending;
-    nsresult rv = mCORSPreflightChannel->IsPending(&pending);
+    rv = mCORSPreflightChannel->IsPending(&pending);
     NS_ENSURE_SUCCESS(rv, rv);
     
     if (pending) {
       return NS_ERROR_IN_PROGRESS;
     }
   }
 
+  if (!(mState & XML_HTTP_REQUEST_OPENED))
+    return NS_ERROR_IN_PROGRESS;
+
   if (!mChannel)             // open() initializes mChannel, and open()
     return NS_ERROR_FAILURE; // must be called before first setRequestHeader()
 
-  nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(mChannel);
+  nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(mChannel));
   if (!httpChannel) {
     return NS_OK;
   }
 
   // Prevent modification to certain HTTP headers (see bug 302263), unless
   // the executing script has UniversalXPConnect.
 
   bool privileged;
-  if (NS_FAILED(IsCapabilityEnabled("UniversalXPConnect", &privileged)))
+  rv = IsCapabilityEnabled("UniversalXPConnect", &privileged);
+  if (NS_FAILED(rv))
     return NS_ERROR_FAILURE;
 
   if (!privileged) {
-    // Step 5: Check for dangerous headers.
+    // Check for dangerous headers
     const char *kInvalidHeaders[] = {
       "accept-charset", "accept-encoding", "access-control-request-headers",
       "access-control-request-method", "connection", "content-length",
       "cookie", "cookie2", "content-transfer-encoding", "date", "expect",
       "host", "keep-alive", "origin", "referer", "te", "trailer",
       "transfer-encoding", "upgrade", "user-agent", "via"
     };
     PRUint32 i;
@@ -3261,27 +3259,25 @@ nsXMLHttpRequest::SetRequestHeader(const
     }
 
     if (!safeHeader) {
       mCORSUnsafeHeaders.AppendElement(header);
     }
   }
 
   // We need to set, not add to, the header.
-  nsresult rv = httpChannel->SetRequestHeader(header, value, false);
-  if (rv == NS_ERROR_INVALID_ARG) {
-    return NS_ERROR_DOM_SYNTAX_ERR;
-  }
+  rv = httpChannel->SetRequestHeader(header, value, false);
   if (NS_SUCCEEDED(rv)) {
     // We'll want to duplicate this header for any replacement channels (eg. on redirect)
     RequestHeader reqHeader = {
       nsCString(header), nsCString(value)
     };
     mModifiedRequestHeaders.AppendElement(reqHeader);
   }
+
   return rv;
 }
 
 /* attribute unsigned long timeout; */
 NS_IMETHODIMP
 nsXMLHttpRequest::GetTimeout(PRUint32 *aTimeout)
 {
   *aTimeout = GetTimeout();
@@ -4010,16 +4006,17 @@ nsXMLHttpProgressEvent::~nsXMLHttpProgre
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsXMLHttpProgressEvent)
 
 DOMCI_DATA(XMLHttpProgressEvent, nsXMLHttpProgressEvent)
 
 // QueryInterface implementation for nsXMLHttpProgressEvent
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsXMLHttpProgressEvent)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMProgressEvent)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsIDOMEvent, nsIDOMProgressEvent)
+  NS_INTERFACE_MAP_ENTRY(nsIDOMNSEvent)
   NS_INTERFACE_MAP_ENTRY(nsIDOMProgressEvent)
   NS_INTERFACE_MAP_ENTRY(nsIDOMLSProgressEvent)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(XMLHttpProgressEvent)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsXMLHttpProgressEvent)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsXMLHttpProgressEvent)
 
--- a/content/base/src/nsXMLHttpRequest.h
+++ b/content/base/src/nsXMLHttpRequest.h
@@ -21,30 +21,31 @@
 #include "nsIInterfaceRequestor.h"
 #include "nsIHttpHeaderVisitor.h"
 #include "nsIProgressEventSink.h"
 #include "nsCOMArray.h"
 #include "nsJSUtils.h"
 #include "nsTArray.h"
 #include "nsIJSNativeInitializer.h"
 #include "nsIDOMLSProgressEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsITimer.h"
 #include "nsDOMProgressEvent.h"
 #include "nsDOMEventTargetHelper.h"
 #include "nsContentUtils.h"
 #include "nsDOMFile.h"
 #include "nsDOMBlobBuilder.h"
 #include "nsIPrincipal.h"
 #include "nsIScriptObjectPrincipal.h"
+#include "mozilla/dom/BindingUtils.h"
+#include "mozilla/dom/XMLHttpRequestBinding.h"
+#include "mozilla/dom/XMLHttpRequestUploadBinding.h"
 
 #include "mozilla/Assertions.h"
-#include "mozilla/dom/BindingUtils.h"
 #include "mozilla/dom/TypedArray.h"
-#include "mozilla/dom/XMLHttpRequestBinding.h"
-#include "mozilla/dom/XMLHttpRequestUploadBinding.h"
 
 class nsILoadGroup;
 class AsyncVerifyRedirectCallbackForwarder;
 class nsIUnicodeDecoder;
 class nsIDOMFormData;
 
 #define IMPL_EVENT_HANDLER(_lowercase, _capitalized)                    \
   JSObject* GetOn##_lowercase(JSContext* /* unused */ )                 \
@@ -704,28 +705,30 @@ protected:
   nsTArray<RequestHeader> mModifiedRequestHeaders;
 };
 
 #undef IMPL_EVENT_HANDLER
 
 // helper class to expose a progress DOM Event
 
 class nsXMLHttpProgressEvent : public nsIDOMProgressEvent,
-                               public nsIDOMLSProgressEvent
+                               public nsIDOMLSProgressEvent,
+                               public nsIDOMNSEvent
 {
 public:
   nsXMLHttpProgressEvent(nsIDOMProgressEvent* aInner,
                          PRUint64 aCurrentProgress,
                          PRUint64 aMaxProgress,
                          nsPIDOMWindow* aWindow);
   virtual ~nsXMLHttpProgressEvent();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
-  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXMLHttpProgressEvent, nsIDOMProgressEvent)
+  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXMLHttpProgressEvent, nsIDOMNSEvent)
   NS_FORWARD_NSIDOMEVENT(mInner->)
+  NS_FORWARD_NSIDOMNSEVENT(mInner->)
   NS_FORWARD_NSIDOMPROGRESSEVENT(mInner->)
   NS_DECL_NSIDOMLSPROGRESSEVENT
 
 protected:
   void WarnAboutLSProgressEvent(nsIDocument::DeprecatedOperations);
 
   // Use nsDOMProgressEvent so that we can forward
   // most of the method calls easily.
--- a/content/events/src/nsDOMEvent.cpp
+++ b/content/events/src/nsDOMEvent.cpp
@@ -170,16 +170,17 @@ nsDOMEvent::~nsDOMEvent()
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsDOMEvent)
 
 DOMCI_DATA(Event, nsDOMEvent)
 
 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsDOMEvent)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMEvent)
   NS_INTERFACE_MAP_ENTRY(nsIDOMEvent)
+  NS_INTERFACE_MAP_ENTRY(nsIDOMNSEvent)
   NS_INTERFACE_MAP_ENTRY(nsIJSNativeInitializer)
   NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(Event)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsDOMEvent)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsDOMEvent)
 
 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDOMEvent)
@@ -530,17 +531,17 @@ nsDOMEvent::SetEventType(const nsAString
     nsContentUtils::GetEventIdAndAtom(aEventTypeArg, mEvent->eventStructType,
                                       &(mEvent->message));
 }
 
 NS_IMETHODIMP
 nsDOMEvent::InitEvent(const nsAString& aEventTypeArg, bool aCanBubbleArg, bool aCancelableArg)
 {
   // Make sure this event isn't already being dispatched.
-  NS_ENSURE_TRUE(!NS_IS_EVENT_IN_DISPATCH(mEvent), NS_OK);
+  NS_ENSURE_TRUE(!NS_IS_EVENT_IN_DISPATCH(mEvent), NS_ERROR_INVALID_ARG);
 
   if (NS_IS_TRUSTED_EVENT(mEvent)) {
     // Ensure the caller is permitted to dispatch trusted DOM events.
 
     bool enabled = false;
     nsContentUtils::GetSecurityManager()->
       IsCapabilityEnabled("UniversalXPConnect", &enabled);
 
--- a/content/events/src/nsDOMEvent.h
+++ b/content/events/src/nsDOMEvent.h
@@ -2,32 +2,34 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef nsDOMEvent_h__
 #define nsDOMEvent_h__
 
 #include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsISupports.h"
 #include "nsCOMPtr.h"
 #include "nsIDOMEventTarget.h"
 #include "nsPIDOMWindow.h"
 #include "nsPoint.h"
 #include "nsGUIEvent.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsAutoPtr.h"
 #include "nsIJSNativeInitializer.h"
 
 class nsIContent;
 class nsPresContext;
 struct JSContext;
 struct JSObject;
  
 class nsDOMEvent : public nsIDOMEvent,
+                   public nsIDOMNSEvent,
                    public nsIJSNativeInitializer
 {
 public:
 
   // Note: this enum must be kept in sync with sEventNames in nsDOMEvent.cpp
   enum nsDOMEvents {
     eDOMEvents_mousedown=0,
     eDOMEvents_mouseup,
@@ -184,16 +186,19 @@ public:
   virtual ~nsDOMEvent();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsDOMEvent, nsIDOMEvent)
 
   // nsIDOMEvent Interface
   NS_DECL_NSIDOMEVENT
 
+  // nsIDOMNSEvent Interface
+  NS_DECL_NSIDOMNSEVENT
+
   // nsIJSNativeInitializer
   NS_IMETHOD Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj,
                         PRUint32 aArgc, jsval* aArgv);
 
   virtual nsresult InitFromCtor(const nsAString& aType,
                                 JSContext* aCx, jsval* aVal);
 
   void InitPresContextData(nsPresContext* aPresContext);
@@ -241,22 +246,16 @@ protected:
   NS_IMETHOD GetBubbles(bool *aBubbles) { return _to GetBubbles(aBubbles); } \
   NS_IMETHOD GetCancelable(bool *aCancelable) { return _to GetCancelable(aCancelable); } \
   NS_IMETHOD GetTimeStamp(DOMTimeStamp *aTimeStamp) { return _to GetTimeStamp(aTimeStamp); } \
   NS_IMETHOD StopPropagation(void) { return _to StopPropagation(); } \
   NS_IMETHOD PreventDefault(void) { return _to PreventDefault(); } \
   NS_IMETHOD InitEvent(const nsAString & eventTypeArg, bool canBubbleArg, bool cancelableArg) { return _to InitEvent(eventTypeArg, canBubbleArg, cancelableArg); } \
   NS_IMETHOD GetDefaultPrevented(bool *aDefaultPrevented) { return _to GetDefaultPrevented(aDefaultPrevented); } \
   NS_IMETHOD StopImmediatePropagation(void) { return _to StopImmediatePropagation(); } \
-  NS_IMETHOD GetOriginalTarget(nsIDOMEventTarget** aOriginalTarget) { return _to GetOriginalTarget(aOriginalTarget); } \
-  NS_IMETHOD GetExplicitOriginalTarget(nsIDOMEventTarget** aExplicitOriginalTarget) { return _to GetExplicitOriginalTarget(aExplicitOriginalTarget); } \
-  NS_IMETHOD PreventBubble() { return _to PreventBubble(); } \
-  NS_IMETHOD PreventCapture() { return _to PreventCapture(); } \
-  NS_IMETHOD GetPreventDefault(bool* aRetval) { return _to GetPreventDefault(aRetval); } \
-  NS_IMETHOD GetIsTrusted(bool* aIsTrusted) { return _to GetIsTrusted(aIsTrusted); } \
   NS_IMETHOD SetTarget(nsIDOMEventTarget *aTarget) { return _to SetTarget(aTarget); } \
   NS_IMETHOD_(bool) IsDispatchStopped(void) { return _to IsDispatchStopped(); } \
   NS_IMETHOD_(nsEvent *) GetInternalNSEvent(void) { return _to GetInternalNSEvent(); } \
   NS_IMETHOD SetTrusted(bool aTrusted) { return _to SetTrusted(aTrusted); }
 
 #define NS_FORWARD_TO_NSDOMEVENT_NO_SERIALIZATION_NO_DUPLICATION \
   NS_FORWARD_NSIDOMEVENT_NO_SERIALIZATION_NO_DUPLICATION(nsDOMEvent::)
 
--- a/content/events/src/nsDOMUIEvent.h
+++ b/content/events/src/nsDOMUIEvent.h
@@ -24,16 +24,18 @@ public:
   NS_DECL_NSIDOMUIEVENT
   
   // Forward to nsDOMEvent
   NS_FORWARD_TO_NSDOMEVENT_NO_SERIALIZATION_NO_DUPLICATION
   NS_IMETHOD DuplicatePrivateData();
   NS_IMETHOD_(void) Serialize(IPC::Message* aMsg, bool aSerializeInterfaceType);
   NS_IMETHOD_(bool) Deserialize(const IPC::Message* aMsg, void** aIter);
 
+  NS_FORWARD_NSIDOMNSEVENT(nsDOMEvent::)
+
   virtual nsresult InitFromCtor(const nsAString& aType,
                                 JSContext* aCx, jsval* aVal);
 
   static nsIntPoint CalculateScreenPoint(nsPresContext* aPresContext,
                                          nsEvent* aEvent)
   {
     if (!aEvent ||
         (aEvent->eventStructType != NS_MOUSE_EVENT &&
--- a/content/events/src/nsEventDispatcher.cpp
+++ b/content/events/src/nsEventDispatcher.cpp
@@ -540,17 +540,17 @@ nsEventDispatcher::Dispatch(nsISupports*
   nsEventTargetChainItem* targetEtci =
     nsEventTargetChainItem::Create(pool.GetPool(), target);
   NS_ENSURE_TRUE(targetEtci, NS_ERROR_OUT_OF_MEMORY);
   if (!targetEtci->IsValid()) {
     nsEventTargetChainItem::Destroy(pool.GetPool(), targetEtci);
     return NS_ERROR_FAILURE;
   }
 
-  // Make sure that nsIDOMEvent::target and nsIDOMEvent::originalTarget
+  // Make sure that nsIDOMEvent::target and nsIDOMNSEvent::originalTarget
   // point to the last item in the chain.
   if (!aEvent->target) {
     // Note, CurrentTarget() points always to the object returned by
     // GetTargetForEventTargetChain().
     aEvent->target = targetEtci->CurrentTarget();
   } else {
     // XXX But if the target is already set, use that. This is a hack
     //     for the 'load', 'beforeunload' and 'unload' events,
@@ -677,18 +677,20 @@ nsEventDispatcher::DispatchDOMEvent(nsIS
   if (aDOMEvent) {
     nsEvent* innerEvent = aDOMEvent->GetInternalNSEvent();
     NS_ENSURE_TRUE(innerEvent, NS_ERROR_ILLEGAL_VALUE);
 
     bool dontResetTrusted = false;
     if (innerEvent->flags & NS_EVENT_DISPATCHED) {
       innerEvent->target = nullptr;
       innerEvent->originalTarget = nullptr;
-    } else {
-      aDOMEvent->GetIsTrusted(&dontResetTrusted);
+    }
+    else {
+      nsCOMPtr<nsIDOMNSEvent> nsevent(do_QueryInterface(aDOMEvent));
+      nsevent->GetIsTrusted(&dontResetTrusted);
     }
 
     if (!dontResetTrusted) {
       //Check security state to determine if dispatcher is trusted
       aDOMEvent->SetTrusted(nsContentUtils::IsCallerTrustedForWrite());
     }
 
     return nsEventDispatcher::Dispatch(aTarget, aPresContext, innerEvent,
--- a/content/events/src/nsEventListenerManager.cpp
+++ b/content/events/src/nsEventListenerManager.cpp
@@ -9,16 +9,17 @@
 // Microsoft's API Name hackery sucks
 #undef CreateEvent
 
 #include "nsISupports.h"
 #include "nsGUIEvent.h"
 #include "nsDOMEvent.h"
 #include "nsEventListenerManager.h"
 #include "nsCaret.h"
+#include "nsIDOMNSEvent.h"
 #include "nsIDOMEventListener.h"
 #include "nsITextControlFrame.h"
 #include "nsGkAtoms.h"
 #include "nsPIDOMWindow.h"
 #include "nsIJSEventListener.h"
 #include "prmem.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIScriptRuntime.h"
--- a/content/events/src/nsEventStateManager.cpp
+++ b/content/events/src/nsEventStateManager.cpp
@@ -2287,17 +2287,17 @@ nsEventStateManager::DetermineDragTarget
                                          nsIContent* aSelectionTarget,
                                          nsDOMDataTransfer* aDataTransfer,
                                          nsISelection** aSelection,
                                          nsIContent** aTargetNode)
 {
   *aTargetNode = nullptr;
 
   nsCOMPtr<nsISupports> container = aPresContext->GetContainer();
-  nsCOMPtr<nsPIDOMWindow> window = do_GetInterface(container);
+  nsCOMPtr<nsIDOMWindow> window = do_GetInterface(container);
   if (!window)
     return;
 
   // GetDragData determines if a selection, link or image in the content
   // should be dragged, and places the data associated with the drag in the
   // data transfer.
   // mGestureDownContent is the node where the mousedown event for the drag
   // occurred, and aSelectionTarget is the node to use when a selection is used
--- a/content/events/src/nsIMEStateManager.cpp
+++ b/content/events/src/nsIMEStateManager.cpp
@@ -12,16 +12,17 @@
 #include "nsPIDOMWindow.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIEditorDocShell.h"
 #include "nsIContent.h"
 #include "nsIDocument.h"
 #include "nsPresContext.h"
 #include "nsIDOMWindow.h"
 #include "nsIDOMMouseEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsContentUtils.h"
 #include "nsINode.h"
 #include "nsIFrame.h"
 #include "nsRange.h"
 #include "nsIDOMRange.h"
 #include "nsISelection.h"
 #include "nsISelectionPrivate.h"
 #include "nsISelectionListener.h"
@@ -196,17 +197,18 @@ nsIMEStateManager::OnClickInEditor(nsPre
   if (sPresContext != aPresContext || sContent != aContent) {
     return;
   }
 
   nsCOMPtr<nsIWidget> widget = GetWidget(aPresContext);
   NS_ENSURE_TRUE(widget, );
 
   bool isTrusted;
-  nsresult rv = aMouseEvent->GetIsTrusted(&isTrusted);
+  nsCOMPtr<nsIDOMNSEvent> NSEvent = do_QueryInterface(aMouseEvent);
+  nsresult rv = NSEvent->GetIsTrusted(&isTrusted);
   NS_ENSURE_SUCCESS(rv, );
   if (!isTrusted) {
     return; // ignore untrusted event.
   }
 
   PRUint16 button;
   rv = aMouseEvent->GetButton(&button);
   NS_ENSURE_SUCCESS(rv, );
--- a/content/events/test/Makefile.in
+++ b/content/events/test/Makefile.in
@@ -79,19 +79,18 @@ MOCHITEST_FILES = \
 		empty.js \
 		test_bug689564.html \
 		test_bug698929.html \
 		test_eventctors.html \
 		test_bug635465.html \
 		test_bug741666.html \
 		test_dom_keyboard_event.html \
 		test_dom_mouse_event.html \
+		test_bug742376.html \
 		test_bug603008.html \
-		test_bug716822.html \
-		test_bug742376.html \
 		$(NULL)
 
 #bug 585630
 ifneq (mobile,$(MOZ_BUILD_APP))
 MOCHITEST_FILES += \
 		test_dragstart.html \
 		$(NULL)
 endif
--- a/content/events/test/test_bug238987.html
+++ b/content/events/test/test_bug238987.html
@@ -48,17 +48,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 
   function handleFocus(e) {
     if (e.target.id == "begin") {
       // if the modifier is set, the test is coming back from the end.
       if (modifier) {
         shouldStop = true;
       }
     } else if (e.target.id == "end") {
-      modifier = Components.interfaces.nsIDOMEvent.SHIFT_MASK;
+      modifier = Components.interfaces.nsIDOMNSEvent.SHIFT_MASK;
     } else if (modifier) {
       var expected = backwardFocusArray.pop();
       ok(expected == e.target.id,
          "(focus) Backward tabbing, expected [" +
          expected + "], got [" + e.target.id + "]");
     } else {
       var expected = forwardFocusArray.shift();
       is(e.target, document.activeElement, "Wrong activeElement!");
--- a/content/events/test/test_bug409604.html
+++ b/content/events/test/test_bug409604.html
@@ -14,18 +14,18 @@ https://bugzilla.mozilla.org/show_bug.cg
 <div id="content" style="display: none">
   
 </div>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
   /** Test for Bug 409604 **/
 
-  var modifier = Components.interfaces.nsIDOMEvent.ALT_MASK |
-                 Components.interfaces.nsIDOMEvent.SHIFT_MASK;
+  var modifier = Components.interfaces.nsIDOMNSEvent.ALT_MASK |
+                 Components.interfaces.nsIDOMNSEvent.SHIFT_MASK;
   var expectedFocus = "a,c,d,e,f,g,h,i,j,k,l,m,n,p,x,y";
   // XXX the "map" test is causing trouble, see bug 433089
   var focusArray = expectedFocus.split(",");
   var unfocusableElementId = "invalid";
   var unfocusableTags = [
       {tag: "abbr", content: "text", attribs: {title: "something"}},
       {tag: "acronym", content: "text", attribs: {title: "something"}},
       {tag: "address", content: "text"},
--- a/content/events/test/test_bug617528.xul
+++ b/content/events/test/test_bug617528.xul
@@ -76,17 +76,17 @@ https://bugzilla.mozilla.org/show_bug.cg
       var wu = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
         .getInterface(Components.interfaces.nsIDOMWindowUtils);
 
       browser.addEventListener("contextmenu", onContextMenu1, false);
       wu.sendMouseEvent("contextmenu", left, top, 2, 1, 0);
       browser.removeEventListener("contextmenu", onContextMenu1, false);
 
       browser.addEventListener("contextmenu", onContextMenu2, false);
-      var shiftMask = Components.interfaces.nsIDOMEvent.SHIFT_MASK;
+      var shiftMask = Components.interfaces.nsIDOMNSEvent.SHIFT_MASK;
       wu.sendMouseEvent("contextmenu", left, top, 2, 1, shiftMask);
       browser.removeEventListener("contextmenu", onContextMenu2, false);
 
       _window.close();
       SimpleTest.finish();
     }
 
     addLoadEvent(start);
deleted file mode 100644
--- a/content/events/test/test_bug716822.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=716822
--->
-<head>
-  <meta charset="utf-8">
-  <title>Test for Bug 716822</title>
-  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=716822">Mozilla Bug 716822</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-  
-</div>
-<pre id="test">
-<script type="application/javascript">
-/** Test for Bug 716822 **/
-for (var p in window.NSEvent) {
-  ok(p in window.Event, p + " should be in Event.");
-  is(window.NSEvent[p], window.Event[p], "Value of " + p);
-}
-</script>
-</pre>
-</body>
-</html>
--- a/content/html/content/src/nsGenericHTMLElement.cpp
+++ b/content/html/content/src/nsGenericHTMLElement.cpp
@@ -53,16 +53,17 @@
 
 #include "nsHTMLParts.h"
 #include "nsContentUtils.h"
 #include "nsString.h"
 #include "nsUnicharUtils.h"
 #include "nsGkAtoms.h"
 #include "nsEventStateManager.h"
 #include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsDOMCSSDeclaration.h"
 #include "nsITextControlFrame.h"
 #include "nsIForm.h"
 #include "nsIFormControl.h"
 #include "nsIDOMHTMLFormElement.h"
 #include "nsHTMLFormElement.h"
 #include "nsFocusManager.h"
 
--- a/content/html/content/src/nsHTMLButtonElement.cpp
+++ b/content/html/content/src/nsHTMLButtonElement.cpp
@@ -14,16 +14,17 @@
 #include "nsIForm.h"
 #include "nsFormSubmission.h"
 #include "nsFormSubmissionConstants.h"
 #include "nsIURL.h"
 #include "nsEventStateManager.h"
 #include "nsIFrame.h"
 #include "nsIFormControlFrame.h"
 #include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsIDocument.h"
 #include "nsGUIEvent.h"
 #include "nsUnicharUtils.h"
 #include "nsLayoutUtils.h"
 #include "nsEventDispatcher.h"
 #include "nsPresState.h"
 #include "nsLayoutErrors.h"
 #include "nsFocusManager.h"
--- a/content/html/content/src/nsHTMLInputElement.cpp
+++ b/content/html/content/src/nsHTMLInputElement.cpp
@@ -41,16 +41,17 @@
 #include "nsGUIEvent.h"
 #include "nsIIOService.h"
 #include "nsDocument.h"
 #include "nsAttrValueOrString.h"
 
 #include "nsPresState.h"
 #include "nsLayoutErrors.h"
 #include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsIDOMNodeList.h"
 #include "nsIDOMHTMLCollection.h"
 #include "nsLinebreakConverter.h" //to strip out carriage returns
 #include "nsReadableUtils.h"
 #include "nsUnicharUtils.h"
 #include "nsEventDispatcher.h"
 #include "nsLayoutUtils.h"
 
--- a/content/xbl/src/nsXBLEventHandler.cpp
+++ b/content/xbl/src/nsXBLEventHandler.cpp
@@ -5,16 +5,17 @@
 
 #include "nsCOMPtr.h"
 #include "nsIAtom.h"
 #include "nsIDOMEventListener.h"
 #include "nsIDOMEventTarget.h"
 #include "nsIDOMKeyEvent.h"
 #include "nsIDOMMouseEvent.h"
 #include "nsXBLPrototypeHandler.h"
+#include "nsIDOMNSEvent.h"
 #include "nsGUIEvent.h"
 #include "nsContentUtils.h"
 
 nsXBLEventHandler::nsXBLEventHandler(nsXBLPrototypeHandler* aHandler)
   : mProtoHandler(aHandler)
 {
 }
 
@@ -80,18 +81,20 @@ nsXBLKeyEventHandler::~nsXBLKeyEventHand
 
 NS_IMPL_ISUPPORTS1(nsXBLKeyEventHandler, nsIDOMEventListener)
 
 bool
 nsXBLKeyEventHandler::ExecuteMatchedHandlers(nsIDOMKeyEvent* aKeyEvent,
                                              PRUint32 aCharCode,
                                              bool aIgnoreShiftKey)
 {
+  nsCOMPtr<nsIDOMNSEvent> domNSEvent = do_QueryInterface(aKeyEvent);
   bool trustedEvent = false;
-  aKeyEvent->GetIsTrusted(&trustedEvent);
+  if (domNSEvent)
+    domNSEvent->GetIsTrusted(&trustedEvent);
 
   nsCOMPtr<nsIDOMEventTarget> target;
   aKeyEvent->GetCurrentTarget(getter_AddRefs(target));
 
   bool executed = false;
   for (PRUint32 i = 0; i < mProtoHandlers.Length(); ++i) {
     nsXBLPrototypeHandler* handler = mProtoHandlers[i];
     bool hasAllowUntrustedAttr = handler->HasAllowUntrustedAttr();
--- a/content/xbl/src/nsXBLPrototypeHandler.cpp
+++ b/content/xbl/src/nsXBLPrototypeHandler.cpp
@@ -22,16 +22,17 @@
 #include "nsIDOMXULElement.h"
 #include "nsIURI.h"
 #include "nsIDOMHTMLTextAreaElement.h"
 #include "nsIDOMHTMLInputElement.h"
 #include "nsFocusManager.h"
 #include "nsEventListenerManager.h"
 #include "nsIDOMEventTarget.h"
 #include "nsIDOMEventListener.h"
+#include "nsIDOMNSEvent.h"
 #include "nsPIDOMWindow.h"
 #include "nsPIWindowRoot.h"
 #include "nsIDOMWindow.h"
 #include "nsIServiceManager.h"
 #include "nsIScriptError.h"
 #include "nsXPIDLString.h"
 #include "nsReadableUtils.h"
 #include "nsGkAtoms.h"
@@ -204,18 +205,21 @@ nsXBLPrototypeHandler::ExecuteHandler(ns
   bool isXULKey = !!(mType & NS_HANDLER_TYPE_XUL);
   bool isXBLCommand = !!(mType & NS_HANDLER_TYPE_XBL_COMMAND);
   NS_ASSERTION(!(isXULKey && isXBLCommand),
                "can't be both a key and xbl command handler");
 
   // XUL handlers and commands shouldn't be triggered by non-trusted
   // events.
   if (isXULKey || isXBLCommand) {
+    nsCOMPtr<nsIDOMNSEvent> domNSEvent = do_QueryInterface(aEvent);
     bool trustedEvent = false;
-    aEvent->GetIsTrusted(&trustedEvent);
+    if (domNSEvent) {
+      domNSEvent->GetIsTrusted(&trustedEvent);
+    }
 
     if (!trustedEvent)
       return NS_OK;
   }
     
   if (isXBLCommand) {
     return DispatchXBLCommand(aTarget, aEvent);
   }
@@ -351,27 +355,30 @@ nsXBLPrototypeHandler::EnsureEventHandle
 }
 
 nsresult
 nsXBLPrototypeHandler::DispatchXBLCommand(nsIDOMEventTarget* aTarget, nsIDOMEvent* aEvent)
 {
   // This is a special-case optimization to make command handling fast.
   // It isn't really a part of XBL, but it helps speed things up.
 
+  // See if preventDefault has been set.  If so, don't execute.
+  bool preventDefault = false;
+  nsCOMPtr<nsIDOMNSEvent> domNSEvent = do_QueryInterface(aEvent);
+  if (domNSEvent) {
+    domNSEvent->GetPreventDefault(&preventDefault);
+  }
+
+  if (preventDefault)
+    return NS_OK;
+
   if (aEvent) {
-    // See if preventDefault has been set.  If so, don't execute.
-    bool preventDefault = false;
-    aEvent->GetPreventDefault(&preventDefault);
-    if (preventDefault) {
+    bool dispatchStopped = aEvent->IsDispatchStopped();
+    if (dispatchStopped)
       return NS_OK;
-    }
-    bool dispatchStopped = aEvent->IsDispatchStopped();
-    if (dispatchStopped) {
-      return NS_OK;
-    }
   }
 
   // Instead of executing JS, let's get the controller for the bound
   // element and call doCommand on it.
   nsCOMPtr<nsIController> controller;
 
   nsCOMPtr<nsPIDOMWindow> privateWindow;
   nsCOMPtr<nsPIWindowRoot> windowRoot(do_QueryInterface(aTarget));
--- a/content/xbl/src/nsXBLWindowKeyHandler.cpp
+++ b/content/xbl/src/nsXBLWindowKeyHandler.cpp
@@ -5,16 +5,17 @@
 
 #include "nsCOMPtr.h"
 #include "nsXBLPrototypeHandler.h"
 #include "nsXBLWindowKeyHandler.h"
 #include "nsIContent.h"
 #include "nsIAtom.h"
 #include "nsIDOMKeyEvent.h"
 #include "nsIDOMEventTarget.h"
+#include "nsIDOMNSEvent.h"
 #include "nsXBLService.h"
 #include "nsIServiceManager.h"
 #include "nsGkAtoms.h"
 #include "nsXBLDocumentInfo.h"
 #include "nsIDOMElement.h"
 #include "nsINativeKeyBindings.h"
 #include "nsIController.h"
 #include "nsIControllers.h"
@@ -274,37 +275,40 @@ DoCommandCallback(const char *aCommand, 
       controller->DoCommand(aCommand);
     }
   }
 }
 
 nsresult
 nsXBLWindowKeyHandler::WalkHandlers(nsIDOMKeyEvent* aKeyEvent, nsIAtom* aEventType)
 {
+  nsCOMPtr<nsIDOMNSEvent> domNSEvent = do_QueryInterface(aKeyEvent);
   bool prevent;
-  aKeyEvent->GetPreventDefault(&prevent);
+  domNSEvent->GetPreventDefault(&prevent);
   if (prevent)
     return NS_OK;
 
   bool trustedEvent = false;
-  // Don't process the event if it was not dispatched from a trusted source
-  aKeyEvent->GetIsTrusted(&trustedEvent);
+  if (domNSEvent) {
+    //Don't process the event if it was not dispatched from a trusted source
+    domNSEvent->GetIsTrusted(&trustedEvent);
+  }
 
   if (!trustedEvent)
     return NS_OK;
 
   bool isEditor;
   nsresult rv = EnsureHandlers(&isEditor);
   NS_ENSURE_SUCCESS(rv, rv);
   
   nsCOMPtr<nsIDOMElement> el = GetElement();
   if (!el) {
     if (mUserHandler) {
       WalkHandlersInternal(aKeyEvent, aEventType, mUserHandler);
-      aKeyEvent->GetPreventDefault(&prevent);
+      domNSEvent->GetPreventDefault(&prevent);
       if (prevent)
         return NS_OK; // Handled by the user bindings. Our work here is done.
     }
   }
 
   nsCOMPtr<nsIContent> content = do_QueryInterface(el);
   // skip keysets that are disabled
   if (content && content->AttrValueIs(kNameSpaceID_None, nsGkAtoms::disabled,
--- a/content/xul/content/src/nsXULElement.cpp
+++ b/content/xul/content/src/nsXULElement.cpp
@@ -94,16 +94,17 @@
 
 #include "nsReadableUtils.h"
 #include "nsIFrame.h"
 #include "nsNodeInfoManager.h"
 #include "nsXBLBinding.h"
 #include "nsEventDispatcher.h"
 #include "mozAutoDocUpdate.h"
 #include "nsIDOMXULCommandEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsCCUncollectableMarker.h"
 
 namespace css = mozilla::css;
 
 //----------------------------------------------------------------------
 
 static NS_DEFINE_CID(kXULPopupListenerCID,        NS_XULPOPUPLISTENER_CID);
 
@@ -1130,28 +1131,29 @@ nsXULElement::PreHandleEvent(nsEventChai
             nsCOMPtr<nsIDOMElement> commandElt;
             domDoc->GetElementById(command, getter_AddRefs(commandElt));
             nsCOMPtr<nsIContent> commandContent(do_QueryInterface(commandElt));
             if (commandContent) {
                 // Create a new command event to dispatch to the element
                 // pointed to by the command attribute.  The new event's
                 // sourceEvent will be the original command event that we're
                 // handling.
-                nsCOMPtr<nsIDOMEvent> domEvent = aVisitor.mDOMEvent;
-                while (domEvent) {
+                nsCOMPtr<nsIDOMNSEvent> nsevent =
+                    do_QueryInterface(aVisitor.mDOMEvent);
+                while (nsevent) {
                     nsCOMPtr<nsIDOMEventTarget> oTarget;
-                    domEvent->GetOriginalTarget(getter_AddRefs(oTarget));
+                    nsevent->GetOriginalTarget(getter_AddRefs(oTarget));
                     NS_ENSURE_STATE(!SameCOMIdentity(oTarget, commandContent));
+                    nsCOMPtr<nsIDOMEvent> tmp;
                     nsCOMPtr<nsIDOMXULCommandEvent> commandEvent =
-                        do_QueryInterface(domEvent);
+                        do_QueryInterface(nsevent);
                     if (commandEvent) {
-                        commandEvent->GetSourceEvent(getter_AddRefs(domEvent));
-                    } else {
-                        domEvent = NULL;
+                        commandEvent->GetSourceEvent(getter_AddRefs(tmp));
                     }
+                    nsevent = do_QueryInterface(tmp);
                 }
 
                 nsInputEvent* orig =
                     static_cast<nsInputEvent*>(aVisitor.mEvent);
                 nsContentUtils::DispatchXULCommand(
                   commandContent,
                   NS_IS_TRUSTED_EVENT(aVisitor.mEvent),
                   aVisitor.mDOMEvent,
--- a/content/xul/content/src/nsXULPopupListener.cpp
+++ b/content/xul/content/src/nsXULPopupListener.cpp
@@ -20,16 +20,17 @@
 #include "nsContentUtils.h"
 #include "nsXULPopupManager.h"
 #include "nsEventStateManager.h"
 #include "nsIScriptContext.h"
 #include "nsIDOMWindow.h"
 #include "nsIDOMXULDocument.h"
 #include "nsIDocument.h"
 #include "nsIDOMEventTarget.h"
+#include "nsIDOMNSEvent.h"
 #include "nsServiceManagerUtils.h"
 #include "nsIPrincipal.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsLayoutUtils.h"
 #include "nsFrameManager.h"
 #include "nsHTMLReflowState.h"
 #include "nsIObjectLoadingContent.h"
 #include "mozilla/Preferences.h"
@@ -87,16 +88,22 @@ nsXULPopupListener::HandleEvent(nsIDOMEv
   PRUint16 button;
 
   nsCOMPtr<nsIDOMMouseEvent> mouseEvent = do_QueryInterface(aEvent);
   if (!mouseEvent) {
     //non-ui event passed in.  bad things.
     return NS_OK;
   }
 
+  // check if someone has attempted to prevent this action.
+  nsCOMPtr<nsIDOMNSEvent> domNSEvent = do_QueryInterface(mouseEvent);
+  if (!domNSEvent) {
+    return NS_OK;
+  }
+
   // Get the node that was clicked on.
   nsCOMPtr<nsIDOMEventTarget> target;
   mouseEvent->GetTarget(getter_AddRefs(target));
   nsCOMPtr<nsIDOMNode> targetNode = do_QueryInterface(target);
 
   if (!targetNode && mIsContext) {
     // Not a DOM node, see if it's the DOM window (bug 380818).
     nsCOMPtr<nsIDOMWindow> domWin = do_QueryInterface(target);
@@ -111,17 +118,17 @@ nsXULPopupListener::HandleEvent(nsIDOMEv
     if (doc)
       targetNode = do_QueryInterface(doc->GetRootElement());
     if (!targetNode) {
       return NS_ERROR_FAILURE;
     }
   }
 
   bool preventDefault;
-  mouseEvent->GetPreventDefault(&preventDefault);
+  domNSEvent->GetPreventDefault(&preventDefault);
   if (preventDefault && targetNode && mIsContext) {
     // Someone called preventDefault on a context menu.
     // Let's make sure they are allowed to do so.
     bool eventEnabled =
       Preferences::GetBool("dom.event.contextmenu.enabled", true);
     if (!eventEnabled) {
       // If the target node is for plug-in, we should not open XUL context
       // menu on windowless plug-ins.
@@ -161,16 +168,18 @@ nsXULPopupListener::HandleEvent(nsIDOMEv
   // submenu of an already-showing popup.  We don't need to do anything at all.
   nsCOMPtr<nsIContent> targetContent = do_QueryInterface(target);
   if (!mIsContext) {
     nsIAtom *tag = targetContent ? targetContent->Tag() : nullptr;
     if (tag == nsGkAtoms::menu || tag == nsGkAtoms::menuitem)
       return NS_OK;
   }
 
+  nsCOMPtr<nsIDOMNSEvent> nsevent = do_QueryInterface(aEvent);
+
   if (mIsContext) {
 #ifndef NS_CONTEXT_MENU_IS_MOUSEUP
     // If the context menu launches on mousedown,
     // we have to fire focus on the content we clicked on
     FireFocusOnTargetContent(targetNode);
 #endif
   }
   else {
--- a/content/xul/document/src/nsXULContentSink.cpp
+++ b/content/xul/document/src/nsXULContentSink.cpp
@@ -860,32 +860,63 @@ XULContentSinkImpl::OpenScript(const PRU
                   // Might as well bail out now instead of setting langID to
                   // nsIProgrammingLanguage::UNKNOWN and bailing out later.
                   return NS_OK;
               }
               // We do want the warning here
               NS_ENSURE_SUCCESS(rv, rv);
           }
 
-          if (nsContentUtils::IsJavascriptMIMEType(mimeType)) {
+          // Javascript keeps the fast path, optimized for most-likely type
+          // Table ordered from most to least likely JS MIME types. For .xul
+          // files that we host, the likeliest type is application/x-javascript.
+          // See bug 62485, feel free to add <script type="..."> survey data to it,
+          // or to a new bug once 62485 is closed.
+          static const char *jsTypes[] = {
+              "application/x-javascript",
+              "text/javascript",
+              "text/ecmascript",
+              "application/javascript",
+              "application/ecmascript",
+              nullptr
+          };
+
+          bool isJavaScript = false;
+          for (PRInt32 i = 0; jsTypes[i]; i++) {
+              if (mimeType.LowerCaseEqualsASCII(jsTypes[i])) {
+                  isJavaScript = true;
+                  break;
+              }
+          }
+
+          if (isJavaScript) {
               langID = nsIProgrammingLanguage::JAVASCRIPT;
               version = JSVERSION_LATEST;
           } else {
               langID = nsIProgrammingLanguage::UNKNOWN;
           }
 
           if (langID != nsIProgrammingLanguage::UNKNOWN) {
             // Get the version string, and ensure the language supports it.
             nsAutoString versionName;
             rv = parser.GetParameter("version", versionName);
-
-            if (NS_SUCCEEDED(rv)) {
-              version = nsContentUtils::ParseJavascriptVersion(versionName);
-            } else if (rv != NS_ERROR_INVALID_ARG) {
-              return rv;
+            if (NS_FAILED(rv)) {
+              if (rv != NS_ERROR_INVALID_ARG)
+                return rv;
+              // no version specified - version remains the default.
+            } else {
+              nsCOMPtr<nsIScriptRuntime> runtime;
+              rv = NS_GetJSRuntime(getter_AddRefs(runtime));
+              if (NS_FAILED(rv))
+                return rv;
+              rv = runtime->ParseVersion(versionName, &version);
+              if (NS_FAILED(rv)) {
+                NS_WARNING("This script language version is not supported - ignored");
+                langID = nsIProgrammingLanguage::UNKNOWN;
+              }
             }
           }
           // Some js specifics yet to be abstracted.
           if (langID == nsIProgrammingLanguage::JAVASCRIPT) {
               // By default scripts in XUL documents have E4X turned on. This
               // is still OK if version is JSVERSION_UNKNOWN (-1),
               version = js::VersionSetMoarXML(JSVersion(version), true);
 
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -946,19 +946,21 @@ NS_IMETHODIMP nsDocShell::GetInterface(c
     }
     else if (aIID.Equals(NS_GET_IID(nsIDOMDocument)) &&
              NS_SUCCEEDED(EnsureContentViewer())) {
         mContentViewer->GetDOMDocument((nsIDOMDocument **) aSink);
         return *aSink ? NS_OK : NS_NOINTERFACE;
     }
     else if (aIID.Equals(NS_GET_IID(nsIDocument)) &&
              NS_SUCCEEDED(EnsureContentViewer())) {
-        nsCOMPtr<nsIDocument> doc = mContentViewer->GetDocument();
-        doc.forget(aSink);
-        return *aSink ? NS_OK : NS_NOINTERFACE;
+        nsCOMPtr<nsIDOMDocument> domDoc;
+        mContentViewer->GetDOMDocument(getter_AddRefs(domDoc));
+        if (!domDoc)
+            return NS_NOINTERFACE;
+        return domDoc->QueryInterface(aIID, aSink);
     }
     else if (aIID.Equals(NS_GET_IID(nsIApplicationCacheContainer))) {
         *aSink = nullptr;
 
         // Return application cache associated with this docshell, if any
 
         nsCOMPtr<nsIContentViewer> contentViewer;
         GetContentViewer(getter_AddRefs(contentViewer));
--- a/dom/activities/src/ActivitiesService.jsm
+++ b/dom/activities/src/ActivitiesService.jsm
@@ -188,31 +188,31 @@ let Activities = {
     */
   startActivity: function activities_startActivity(aMsg) {
     debug("StartActivity: " + JSON.stringify(aMsg));
 
     let successCb = function successCb(aResults) {
       debug(JSON.stringify(aResults));
 
       // We have no matching activity registered, let's fire an error.
-      if (aResults.options.length === 0) {
+      if (aResults.length === 0) {
         ppmm.sendAsyncMessage("Activity:FireError", {
-          "id": aMsg.id,
+          "id": aMsg.id, 
           "error": "NO_PROVIDER"
         });
         return;
       }
 
       function getActivityChoice(aChoice) {
         debug("Activity choice: " + aChoice);
 
         // The user has cancelled the choice, fire an error.
         if (aChoice === -1) {
           ppmm.sendAsyncMessage("Activity:FireError", {
-            "id": aMsg.id,
+            "id": aMsg.id, 
             "error": "USER_ABORT"
           });
           return;
         }
 
         let sysmm = Cc["@mozilla.org/system-message-internal;1"]
                       .getService(Ci.nsISystemMessagesInternal);
         if (!sysmm) {
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -59,16 +59,17 @@
 #include "nsGlobalWindow.h"
 #include "nsHistory.h"
 #include "nsIContent.h"
 #include "nsIAttribute.h"
 #include "nsIDocument.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMXMLDocument.h"
 #include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsIDOMKeyEvent.h"
 #include "nsIDOMEventListener.h"
 #include "nsContentUtils.h"
 #include "nsDOMWindowUtils.h"
 #include "nsIDOMGlobalPropertyInitializer.h"
 #include "mozilla/Preferences.h"
 #include "nsLocation.h"
 #include "mozilla/Attributes.h"
@@ -2369,16 +2370,17 @@ nsDOMClassInfo::RegisterExternalClasses(
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget)                                \
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMNodeSelector)                               \
     DOM_CLASSINFO_MAP_ENTRY(nsIInlineEventHandlers)                           \
     DOM_CLASSINFO_MAP_CONDITIONAL_ENTRY(nsITouchEventReceiver,                \
                                         nsDOMTouchEvent::PrefEnabled())
 
 #define DOM_CLASSINFO_EVENT_MAP_ENTRIES                                       \
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMEvent)                                      \
+    DOM_CLASSINFO_MAP_ENTRY(nsIDOMNSEvent)                                    \
 
 #define DOM_CLASSINFO_UI_EVENT_MAP_ENTRIES                                    \
     DOM_CLASSINFO_MAP_ENTRY(nsIDOMUIEvent)                                    \
     DOM_CLASSINFO_EVENT_MAP_ENTRIES
 
 #define DOM_CLASSINFO_WINDOW_MAP_ENTRIES(_support_indexed_db)                  \
   DOM_CLASSINFO_MAP_ENTRY(nsIDOMWindow)                                        \
   DOM_CLASSINFO_MAP_ENTRY(nsIDOMJSWindow)                                      \
@@ -6389,16 +6391,24 @@ nsDOMConstructor::ResolveInterfaceConsta
     class_iid = class_name_struct->mData->mProtoChainInterface;
   } else {
     return NS_OK;
   }
 
   nsresult rv = DefineInterfaceConstants(cx, obj, class_iid);
   NS_ENSURE_SUCCESS(rv, rv);
 
+  // Special case for |Event|, Event needs constants from NSEvent
+  // too for backwards compatibility.
+  if (class_iid->Equals(NS_GET_IID(nsIDOMEvent))) {
+    rv = DefineInterfaceConstants(cx, obj,
+                                  &NS_GET_IID(nsIDOMNSEvent));
+    NS_ENSURE_SUCCESS(rv, rv);
+  }
+
   // Special case for |IDBKeyRange| which gets funny "static" functions.
   if (class_iid->Equals(NS_GET_IID(nsIIDBKeyRange)) &&
       !indexedDB::IDBKeyRange::DefineConstructors(cx, obj)) {
     return NS_ERROR_FAILURE;
   }
 
   // Special case a few IDB interfaces which for now are getting transitional
   // constants.
@@ -6533,16 +6543,24 @@ ResolvePrototype(nsIXPConnect *aXPConnec
 
     if (!ac.enter(cx, class_obj)) {
       return NS_ERROR_FAILURE;
     }
 
     rv = DefineInterfaceConstants(cx, class_obj, primary_iid);
     NS_ENSURE_SUCCESS(rv, rv);
 
+    // Special case for |Event|, Event needs constants from NSEvent
+    // too for backwards compatibility.
+    if (primary_iid->Equals(NS_GET_IID(nsIDOMEvent))) {
+      rv = DefineInterfaceConstants(cx, class_obj,
+                                    &NS_GET_IID(nsIDOMNSEvent));
+      NS_ENSURE_SUCCESS(rv, rv);
+    }
+
     // Special case for |IDBKeyRange| which gets funny "static" functions.
     if (primary_iid->Equals(NS_GET_IID(nsIIDBKeyRange)) &&
         !indexedDB::IDBKeyRange::DefineConstructors(cx, class_obj)) {
       return NS_ERROR_FAILURE;
     }
 
     // Special case a few IDB interfaces which for now are getting transitional
     // constants.
@@ -7364,22 +7382,27 @@ nsWindowSH::NewResolve(nsIXPConnectWrapp
         return NS_ERROR_FAILURE;
       }
       *objp = obj;
 
       return NS_OK;
     }
 
     if (sDocument_id == id) {
-      nsCOMPtr<nsIDocument> document = win->GetDoc();
-      JS::Value v;
+      nsCOMPtr<nsIDOMDocument> document;
+      rv = win->GetDocument(getter_AddRefs(document));
+      NS_ENSURE_SUCCESS(rv, rv);
+
+      // FIXME Ideally we'd have an nsIDocument here and get nsWrapperCache
+      //       from it.
+      jsval v;
       nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
-      rv = WrapNative(cx, JS_GetGlobalForScopeChain(cx), document, document,
-                      &NS_GET_IID(nsIDOMDocument), &v, getter_AddRefs(holder),
-                      false);
+      rv = WrapNative(cx, JS_GetGlobalForScopeChain(cx), document,
+                      &NS_GET_IID(nsIDOMDocument), false, &v,
+                      getter_AddRefs(holder));
       NS_ENSURE_SUCCESS(rv, rv);
 
       // The PostCreate hook for the document will handle defining the
       // property
       *objp = obj;
 
       // NB: We need to do this for any Xray wrapper.
       if (xpc::WrapperFactory::IsXrayWrapper(obj)) {
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -2,17 +2,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIDocShell.h"
 #include "nsPresContext.h"
 #include "nsDOMClassInfoID.h"
 #include "nsDOMError.h"
-#include "nsIDOMEvent.h"
+#include "nsIDOMNSEvent.h"
 #include "nsDOMWindowUtils.h"
 #include "nsQueryContentEventResult.h"
 #include "nsGlobalWindow.h"
 #include "nsIDocument.h"
 #include "nsFocusManager.h"
 #include "nsEventStateManager.h"
 #include "nsFrameManager.h"
 #include "nsRefreshDriver.h"
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -2825,33 +2825,35 @@ nsGlobalWindow::GetPrincipal()
 
   return nullptr;
 }
 
 //*****************************************************************************
 // nsGlobalWindow::nsIDOMWindow
 //*****************************************************************************
 
-void
-nsPIDOMWindow::MaybeCreateDoc()
-{
-  MOZ_ASSERT(!mDoc);
-  if (nsIDocShell* docShell = GetDocShell()) {
-    // Note that |document| here is the same thing as our mDocument, but we
-    // don't have to explicitly set the member variable because the docshell
-    // has already called SetNewDocument().
-    nsCOMPtr<nsIDocument> document = do_GetInterface(docShell);
-  }
-}
-
 NS_IMETHODIMP
 nsGlobalWindow::GetDocument(nsIDOMDocument** aDocument)
 {
-  nsCOMPtr<nsIDOMDocument> document = do_QueryInterface(GetDoc());
-  document.forget(aDocument);
+  // This method *should* forward calls to the outer window, but since
+  // there's nothing here that *depends* on anything in the outer
+  // (GetDocShell() eliminates that dependency), we won't do that to
+  // avoid the extra virtual function call.
+
+  // lazily instantiate an about:blank document if necessary, and if
+  // we have what it takes to do so. Note that domdoc here is the same
+  // thing as our mDocument, but we don't have to explicitly set the
+  // member variable because the docshell has already called
+  // SetNewDocument().
+  nsIDocShell *docShell;
+  if (!mDocument && (docShell = GetDocShell()))
+    nsCOMPtr<nsIDOMDocument> domdoc(do_GetInterface(docShell));
+
+  NS_IF_ADDREF(*aDocument = mDocument);
+
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsGlobalWindow::GetWindow(nsIDOMWindow** aWindow)
 {
   FORWARD_TO_OUTER(GetWindow, (aWindow), NS_ERROR_NOT_INITIALIZED);
 
--- a/dom/base/nsIScriptRuntime.h
+++ b/dom/base/nsIScriptRuntime.h
@@ -3,29 +3,36 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef nsIScriptRuntime_h__
 #define nsIScriptRuntime_h__
 
 #include "nsIScriptContext.h"
 
 #define NS_ISCRIPTRUNTIME_IID \
-{ 0xfa30d7a8, 0x7f0a, 0x437a, \
-  { 0xa1, 0x0c, 0xc2, 0xbe, 0xa3, 0xdb, 0x4f, 0x4b } }
+{ 0xb146580f, 0x55f7, 0x4d97, \
+  { 0x8a, 0xbb, 0x4a, 0x50, 0xb0, 0xa8, 0x04, 0x97 } }
 
 /**
  * A singleton language environment for an application.  Responsible for
  * initializing and cleaning up the global language environment, and a factory
  * for language contexts
  */
 class nsIScriptRuntime : public nsISupports
 {
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTRUNTIME_IID)
 
+  /* Parses a "version string" for the language into a bit-mask used by
+   * the language implementation.  If the specified version is not supported
+   * an error should be returned.  If the specified version is blank, a default
+   * version should be assumed
+   */
+  virtual nsresult ParseVersion(const nsString &aVersionStr, PRUint32 *verFlags) = 0;
+  
   /* Factory for a new context for this language */
   virtual already_AddRefed<nsIScriptContext> CreateContext() = 0;
   
   /* Memory managment for script objects returned from various
    * nsIScriptContext methods.  These are identical to those in
    * nsIScriptContext, but are useful when a script context is not known.
    */
   virtual nsresult DropScriptObject(void *object) = 0;
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -3653,16 +3653,39 @@ NS_IMPL_RELEASE(nsJSRuntime)
 
 already_AddRefed<nsIScriptContext>
 nsJSRuntime::CreateContext()
 {
   nsCOMPtr<nsIScriptContext> scriptContext = new nsJSContext(sRuntime);
   return scriptContext.forget();
 }
 
+nsresult
+nsJSRuntime::ParseVersion(const nsString &aVersionStr, PRUint32 *flags)
+{
+    NS_PRECONDITION(flags, "Null flags param?");
+    JSVersion jsVersion = JSVERSION_UNKNOWN;
+    if (aVersionStr.Length() != 3 || aVersionStr[0] != '1' || aVersionStr[1] != '.')
+        jsVersion = JSVERSION_UNKNOWN;
+    else switch (aVersionStr[2]) {
+        case '0': jsVersion = JSVERSION_1_0; break;
+        case '1': jsVersion = JSVERSION_1_1; break;
+        case '2': jsVersion = JSVERSION_1_2; break;
+        case '3': jsVersion = JSVERSION_1_3; break;
+        case '4': jsVersion = JSVERSION_1_4; break;
+        case '5': jsVersion = JSVERSION_1_5; break;
+        case '6': jsVersion = JSVERSION_1_6; break;
+        case '7': jsVersion = JSVERSION_1_7; break;
+        case '8': jsVersion = JSVERSION_1_8; break;
+        default:  jsVersion = JSVERSION_UNKNOWN;
+    }
+    *flags = (PRUint32)jsVersion;
+    return NS_OK;
+}
+
 //static
 void
 nsJSRuntime::Startup()
 {
   // initialize all our statics, so that we can restart XPCOM
   sGCTimer = sFullGCTimer = sCCTimer = nullptr;
   sCCLockedOut = false;
   sCCLockedOutTime = 0;
--- a/dom/base/nsJSEnvironment.h
+++ b/dom/base/nsJSEnvironment.h
@@ -312,16 +312,18 @@ public:
   static JSRuntime *sRuntime;
 
 public:
   // nsISupports
   NS_DECL_ISUPPORTS
 
   virtual already_AddRefed<nsIScriptContext> CreateContext();
 
+  virtual nsresult ParseVersion(const nsString &aVersionStr, PRUint32 *flags);
+
   virtual nsresult DropScriptObject(void *object);
   virtual nsresult HoldScriptObject(void *object);
   
   static void Startup();
   static void Shutdown();
   // Setup all the statics etc - safe to call multiple times after Startup()
   static nsresult Init();
   // Get the NameSpaceManager, creating if necessary
--- a/dom/base/nsPIDOMWindow.h
+++ b/dom/base/nsPIDOMWindow.h
@@ -167,30 +167,16 @@ public:
   {
     return mDocument;
   }
   nsIDocument* GetExtantDoc() const
   {
     return mDoc;
   }
 
-  nsIDocument* GetDoc()
-  {
-    if (!mDoc) {
-      MaybeCreateDoc();
-    }
-    return mDoc;
-  }
-
-protected:
-  // Lazily instantiate an about:blank document if necessary, and if
-  // we have what it takes to do so.
-  void MaybeCreateDoc();
-
-public:
   // Internal getter/setter for the frame element, this version of the
   // getter crosses chrome boundaries whereas the public scriptable
   // one doesn't for security reasons.
   nsIDOMElement* GetFrameElementInternal() const
   {
     if (mOuterWindow) {
       return mOuterWindow->GetFrameElementInternal();
     }
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -398,17 +398,23 @@ QueryInterface(JSContext* cx, unsigned a
   // Lie, otherwise we need to check classinfo or QI
   *vp = thisv;
   return true;
 }
 
 JSBool
 ThrowingConstructor(JSContext* cx, unsigned argc, JS::Value* vp)
 {
-  return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR);
+  return Throw<true>(cx, NS_ERROR_FAILURE);
+}
+
+JSBool
+ThrowingConstructorWorkers(JSContext* cx, unsigned argc, JS::Value* vp)
+{
+  return Throw<false>(cx, NS_ERROR_FAILURE);
 }
 
 bool
 XrayResolveProperty(JSContext* cx, JSObject* wrapper, jsid id,
                     JSPropertyDescriptor* desc,
                     // And the things we need to determine the descriptor
                     Prefable<JSFunctionSpec>* methods,
                     jsid* methodIds,
--- a/dom/bindings/BindingUtils.h
+++ b/dom/bindings/BindingUtils.h
@@ -685,16 +685,18 @@ InitIds(JSContext* cx, Prefable<Spec>* p
 
   return true;
 }
 
 JSBool
 QueryInterface(JSContext* cx, unsigned argc, JS::Value* vp);
 JSBool
 ThrowingConstructor(JSContext* cx, unsigned argc, JS::Value* vp);
+JSBool
+ThrowingConstructorWorkers(JSContext* cx, unsigned argc, JS::Value* vp);
 
 template<class T>
 class NonNull
 {
 public:
   NonNull()
 #ifdef DEBUG
     : inited(false)
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -1113,17 +1113,17 @@ class CGCreateInterfaceObjectsMethod(CGA
         needInterfaceObjectClass = (needInterfaceObject and
                                     self.descriptor.hasInstanceInterface)
         needConstructor = (needInterfaceObject and
                            not self.descriptor.hasInstanceInterface)
         if self.descriptor.interface.ctor():
             constructHook = CONSTRUCT_HOOK_NAME
             constructArgs = methodLength(self.descriptor.interface.ctor())
         else:
-            constructHook = "ThrowingConstructor"
+            constructHook = "ThrowingConstructorWorkers" if self.descriptor.workers else "ThrowingConstructor"
             constructArgs = 0
 
         call = CGGeneric(("return dom::CreateInterfaceObjects(aCx, aGlobal, aReceiver, parentProto,\n"
                           "                                   %s, %s, %s, %d,\n"
                           "                                   %%(methods)s, %%(attrs)s, %%(consts)s, %%(staticMethods)s,\n"
                           "                                   %s);") % (
             "&PrototypeClass" if needInterfacePrototypeObject else "NULL",
             "&InterfaceObjectClass" if needInterfaceObjectClass else "NULL",
@@ -1208,37 +1208,34 @@ class CGGetConstructorObjectMethod(CGGet
 
 def CheckPref(descriptor, globalName, varName, retval, wrapperCache = None):
     """
     Check whether bindings should be enabled for this descriptor.  If not, set
     varName to false and return retval.
     """
     if not descriptor.prefable:
         return ""
-
     if wrapperCache:
        wrapperCache = "      %s->ClearIsDOMBinding();\n" % (wrapperCache)
     else:
         wrapperCache = ""
-
-    failureCode = ("      %s = false;\n" +
-                   "      return %s;") % (varName, retval)
     return """
   {
     XPCWrappedNativeScope* scope =
       XPCWrappedNativeScope::FindInJSObjectScope(aCx, %s);
     if (!scope) {
-%s
+      return %s;
     }
 
     if (!scope->ExperimentalBindingsEnabled()) {
-%s%s
+%s      %s = false;
+      return %s;
     }
   }
-""" % (globalName, failureCode, wrapperCache, failureCode)
+""" % (globalName, retval, wrapperCache, varName, retval)
 
 class CGDefineDOMInterfaceMethod(CGAbstractMethod):
     """
     A method for resolve hooks to try to lazily define the interface object for
     a given interface.
     """
     def __init__(self, descriptor):
         args = [Argument('JSContext*', 'aCx'), Argument('JSObject*', 'aReceiver'),
--- a/dom/bindings/Errors.msg
+++ b/dom/bindings/Errors.msg
@@ -19,9 +19,8 @@
  * be replaced with a string value when the error is reported.
  */
 
 MSG_DEF(MSG_INVALID_ENUM_VALUE, 2, "Value '{0}' is not a valid value for enumeration {1}.")
 MSG_DEF(MSG_MISSING_ARGUMENTS, 1, "Not enough arguments to {0}.")
 MSG_DEF(MSG_NOT_OBJECT, 0, "Value not an object.")
 MSG_DEF(MSG_DOES_NOT_IMPLEMENT_INTERFACE, 1, "Value does not implement interface {0}.")
 MSG_DEF(MSG_NOT_IN_UNION, 1, "Value could not be converted to any of: {0}.")
-MSG_DEF(MSG_ILLEGAL_CONSTRUCTOR, 0, "Illegal constructor.")
--- a/dom/bindings/Makefile.in
+++ b/dom/bindings/Makefile.in
@@ -57,26 +57,25 @@ CPPSRCS = \
 
 EXPORTS_NAMESPACES = $(binding_include_path) mozilla
 
 EXPORTS_mozilla = \
   ErrorResult.h \
   $(NULL)
 
 EXPORTS_$(binding_include_path) = \
-  BindingUtils.h \
   DOMJSClass.h \
   Errors.msg \
-  Nullable.h \
-  PrimitiveConversions.h \
   PrototypeList.h \
   RegisterBindings.h \
+  Nullable.h \
   TypedArray.h \
+  BindingUtils.h \
+  UnionTypes.h \
   UnionConversions.h \
-  UnionTypes.h \
   $(exported_binding_headers) \
   $(NULL)
 
 LOCAL_INCLUDES += -I$(topsrcdir)/js/xpconnect/src \
   -I$(topsrcdir)/js/xpconnect/wrappers \
   -I$(topsrcdir)/content/canvas/src \
   -I$(topsrcdir)/content/html/content/src
 
--- a/dom/bindings/test/Makefile.in
+++ b/dom/bindings/test/Makefile.in
@@ -44,18 +44,17 @@ bindinggen_dependencies := \
   ../Configuration.py \
   ../Codegen.py \
   ../parser/WebIDL.py \
   ../ParserResults.pkl \
   ../Makefile \
   $(GLOBAL_DEPS) \
   $(NULL)
 
-MOCHITEST_FILES := \
-  test_bug773326.html \
+MOCHITEST_FILES = \
   test_enums.html \
   test_integers.html \
   test_interfaceToString.html \
   test_lookupGetter.html \
   test_InstanceOf.html \
   test_traceProtos.html \
   test_forOf.html \
   forOf_iframe.html \
deleted file mode 100644
--- a/dom/bindings/test/test_bug773326.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>Test for Bug 773326</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<div id=log></div>
-<script>
-test(function() {
-  new Worker("data:text/javascript,new XMLHttpRequest(42)");
-}, "Should not crash")
-</script>
--- a/dom/bluetooth/nsIDOMBluetoothDeviceEvent.idl
+++ b/dom/bluetooth/nsIDOMBluetoothDeviceEvent.idl
@@ -3,13 +3,13 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIDOMEvent.idl"
 
 interface nsIDOMBluetoothDevice;
 
-[scriptable, builtinclass, uuid(819b4683-23a9-4af9-96b9-2c40a14ecb0b)]
+[scriptable, builtinclass, uuid(49294da3-b698-4a7f-aca2-3f9bc44c7625)]
 interface nsIDOMBluetoothDeviceEvent : nsIDOMEvent
 {
   readonly attribute nsIDOMBluetoothDevice device;
 };
--- a/dom/bluetooth/nsIDOMBluetoothPropertyEvent.idl
+++ b/dom/bluetooth/nsIDOMBluetoothPropertyEvent.idl
@@ -1,13 +1,13 @@
 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
 /* vim: set ts=2 et sw=2 tw=40: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIDOMEvent.idl"
 
-[scriptable, builtinclass, uuid(5927bb1f-e8eb-4b40-ae20-cd02f34412ce)]
+[scriptable, builtinclass, uuid(2604ce78-abaa-4af4-b456-daa4c6386a11)]
 interface nsIDOMBluetoothPropertyEvent : nsIDOMEvent
 {
   readonly attribute DOMString property;
 };
--- a/dom/imptests/Makefile.in
+++ b/dom/imptests/Makefile.in
@@ -8,17 +8,16 @@ srcdir = @srcdir@
 VPATH = @srcdir@
 relativesrcdir = dom/imported-tests
 
 DIRS = \
   failures/editing/conformancetest \
   failures/editing/selecttest \
   failures/html/tests/submission/Opera/microdata \
   failures/webapps/DOMCore/tests/approved \
-  failures/webapps/DOMCore/tests/submissions/Ms2ger \
   failures/webapps/DOMCore/tests/submissions/Opera \
   failures/webapps/WebStorage/tests/submissions/Infraware \
   failures/webapps/WebStorage/tests/submissions/Ms2ger \
   failures/webapps/XMLHttpRequest/tests/submissions/Ms2ger \
   $(NULL)
 
 include $(srcdir)/editing.mk
 include $(srcdir)/html.mk
--- a/dom/imptests/failures/webapps/DOMCore/tests/approved/test_Range-compareBoundaryPoints.html.json
+++ b/dom/imptests/failures/webapps/DOMCore/tests/approved/test_Range-compareBoundaryPoints.html.json
@@ -1,114 +1,243 @@
 {
   "0,0,0: context range 0 [detached], argument range 0 [detached], how 0": true,
-  "0,0,100: context range 0 [detached], argument range 0 [detached], how \"quasit\"": true,
+  "0,0,1: context range 0 [detached], argument range 0 [detached], how 1": true,
+  "0,0,2: context range 0 [detached], argument range 0 [detached], how 2": true,
+  "0,0,3: context range 0 [detached], argument range 0 [detached], how 3": true,
+  "0,0,4: context range 0 [detached], argument range 0 [detached], how -1": true,
+  "0,0,5: context range 0 [detached], argument range 0 [detached], how 4": true,
+  "0,0,6: context range 0 [detached], argument range 0 [detached], how 5": true,
+  "0,0,7: context range 0 [detached], argument range 0 [detached], how NaN": true,
+  "0,0,8: context range 0 [detached], argument range 0 [detached], how -0": true,
+  "0,0,9: context range 0 [detached], argument range 0 [detached], how Infinity": true,
   "0,0,10: context range 0 [detached], argument range 0 [detached], how -Infinity": true,
   "0,0,11: context range 0 [detached], argument range 0 [detached], how 65535": true,
   "0,0,12: context range 0 [detached], argument range 0 [detached], how 65536": true,
   "0,0,13: context range 0 [detached], argument range 0 [detached], how 65537": true,
   "0,0,14: context range 0 [detached], argument range 0 [detached], how 65538": true,
   "0,0,15: context range 0 [detached], argument range 0 [detached], how 65539": true,
   "0,0,16: context range 0 [detached], argument range 0 [detached], how 65540": true,
   "0,0,17: context range 0 [detached], argument range 0 [detached], how -65537": true,
   "0,0,18: context range 0 [detached], argument range 0 [detached], how -65536": true,
   "0,0,19: context range 0 [detached], argument range 0 [detached], how -65535": true,
-  "0,0,1: context range 0 [detached], argument range 0 [detached], how 1": true,
   "0,0,20: context range 0 [detached], argument range 0 [detached], how -65534": true,
   "0,0,21: context range 0 [detached], argument range 0 [detached], how -65533": true,
   "0,0,22: context range 0 [detached], argument range 0 [detached], how -65532": true,
   "0,0,23: context range 0 [detached], argument range 0 [detached], how 4294967295": true,
   "0,0,24: context range 0 [detached], argument range 0 [detached], how 4294967296": true,
   "0,0,25: context range 0 [detached], argument range 0 [detached], how 4294967297": true,
   "0,0,26: context range 0 [detached], argument range 0 [detached], how 4294967298": true,
   "0,0,27: context range 0 [detached], argument range 0 [detached], how 4294967299": true,
   "0,0,28: context range 0 [detached], argument range 0 [detached], how 4294967300": true,
   "0,0,29: context range 0 [detached], argument range 0 [detached], how -0.5": true,
-  "0,0,2: context range 0 [detached], argument range 0 [detached], how 2": true,
   "0,0,30: context range 0 [detached], argument range 0 [detached], how 0.5": true,
   "0,0,31: context range 0 [detached], argument range 0 [detached], how 1.5": true,
   "0,0,32: context range 0 [detached], argument range 0 [detached], how 2.5": true,
   "0,0,33: context range 0 [detached], argument range 0 [detached], how 3.5": true,
   "0,0,34: context range 0 [detached], argument range 0 [detached], how 4.5": true,
   "0,0,35: context range 0 [detached], argument range 0 [detached], how -1.5": true,
   "0,0,36: context range 0 [detached], argument range 0 [detached], how -0.5": true,
   "0,0,37: context range 0 [detached], argument range 0 [detached], how 0.5": true,
   "0,0,38: context range 0 [detached], argument range 0 [detached], how 1.5": true,
   "0,0,39: context range 0 [detached], argument range 0 [detached], how 2.5": true,
-  "0,0,3: context range 0 [detached], argument range 0 [detached], how 3": true,
   "0,0,40: context range 0 [detached], argument range 0 [detached], how 3.5": true,
   "0,0,41: context range 0 [detached], argument range 0 [detached], how -73.5": true,
   "0,0,42: context range 0 [detached], argument range 0 [detached], how -72.5": true,
   "0,0,43: context range 0 [detached], argument range 0 [detached], how -71.5": true,
   "0,0,44: context range 0 [detached], argument range 0 [detached], how -70.5": true,
   "0,0,45: context range 0 [detached], argument range 0 [detached], how -69.5": true,
   "0,0,46: context range 0 [detached], argument range 0 [detached], how -68.5": true,
   "0,0,47: context range 0 [detached], argument range 0 [detached], how \"0\"": true,
   "0,0,48: context range 0 [detached], argument range 0 [detached], how \"1\"": true,
   "0,0,49: context range 0 [detached], argument range 0 [detached], how \"2\"": true,
-  "0,0,4: context range 0 [detached], argument range 0 [detached], how -1": true,
   "0,0,50: context range 0 [detached], argument range 0 [detached], how \"3\"": true,
   "0,0,51: context range 0 [detached], argument range 0 [detached], how \"-1\"": true,
   "0,0,52: context range 0 [detached], argument range 0 [detached], how \"4\"": true,
   "0,0,53: context range 0 [detached], argument range 0 [detached], how \"5\"": true,
   "0,0,54: context range 0 [detached], argument range 0 [detached], how \"NaN\"": true,
   "0,0,55: context range 0 [detached], argument range 0 [detached], how \"0\"": true,
   "0,0,56: context range 0 [detached], argument range 0 [detached], how \"Infinity\"": true,
   "0,0,57: context range 0 [detached], argument range 0 [detached], how \"-Infinity\"": true,
   "0,0,58: context range 0 [detached], argument range 0 [detached], how \"65535\"": true,
   "0,0,59: context range 0 [detached], argument range 0 [detached], how \"65536\"": true,
-  "0,0,5: context range 0 [detached], argument range 0 [detached], how 4": true,
   "0,0,60: context range 0 [detached], argument range 0 [detached], how \"65537\"": true,
   "0,0,61: context range 0 [detached], argument range 0 [detached], how \"65538\"": true,
   "0,0,62: context range 0 [detached], argument range 0 [detached], how \"65539\"": true,
   "0,0,63: context range 0 [detached], argument range 0 [detached], how \"65540\"": true,
   "0,0,64: context range 0 [detached], argument range 0 [detached], how \"-65537\"": true,
   "0,0,65: context range 0 [detached], argument range 0 [detached], how \"-65536\"": true,
   "0,0,66: context range 0 [detached], argument range 0 [detached], how \"-65535\"": true,
   "0,0,67: context range 0 [detached], argument range 0 [detached], how \"-65534\"": true,
   "0,0,68: context range 0 [detached], argument range 0 [detached], how \"-65533\"": true,
   "0,0,69: context range 0 [detached], argument range 0 [detached], how \"-65532\"": true,
-  "0,0,6: context range 0 [detached], argument range 0 [detached], how 5": true,
   "0,0,70: context range 0 [detached], argument range 0 [detached], how \"4294967295\"": true,
   "0,0,71: context range 0 [detached], argument range 0 [detached], how \"4294967296\"": true,
   "0,0,72: context range 0 [detached], argument range 0 [detached], how \"4294967297\"": true,
   "0,0,73: context range 0 [detached], argument range 0 [detached], how \"4294967298\"": true,
   "0,0,74: context range 0 [detached], argument range 0 [detached], how \"4294967299\"": true,
   "0,0,75: context range 0 [detached], argument range 0 [detached], how \"4294967300\"": true,
   "0,0,76: context range 0 [detached], argument range 0 [detached], how \"-0.5\"": true,
   "0,0,77: context range 0 [detached], argument range 0 [detached], how \"0.5\"": true,
   "0,0,78: context range 0 [detached], argument range 0 [detached], how \"1.5\"": true,
   "0,0,79: context range 0 [detached], argument range 0 [detached], how \"2.5\"": true,
-  "0,0,7: context range 0 [detached], argument range 0 [detached], how NaN": true,
   "0,0,80: context range 0 [detached], argument range 0 [detached], how \"3.5\"": true,
   "0,0,81: context range 0 [detached], argument range 0 [detached], how \"4.5\"": true,
   "0,0,82: context range 0 [detached], argument range 0 [detached], how \"-1.5\"": true,
   "0,0,83: context range 0 [detached], argument range 0 [detached], how \"-0.5\"": true,
   "0,0,84: context range 0 [detached], argument range 0 [detached], how \"0.5\"": true,
   "0,0,85: context range 0 [detached], argument range 0 [detached], how \"1.5\"": true,
   "0,0,86: context range 0 [detached], argument range 0 [detached], how \"2.5\"": true,
   "0,0,87: context range 0 [detached], argument range 0 [detached], how \"3.5\"": true,
   "0,0,88: context range 0 [detached], argument range 0 [detached], how \"-73.5\"": true,
   "0,0,89: context range 0 [detached], argument range 0 [detached], how \"-72.5\"": true,
-  "0,0,8: context range 0 [detached], argument range 0 [detached], how -0": true,
   "0,0,90: context range 0 [detached], argument range 0 [detached], how \"-71.5\"": true,
   "0,0,91: context range 0 [detached], argument range 0 [detached], how \"-70.5\"": true,
   "0,0,92: context range 0 [detached], argument range 0 [detached], how \"-69.5\"": true,
   "0,0,93: context range 0 [detached], argument range 0 [detached], how \"-68.5\"": true,
   "0,0,94: context range 0 [detached], argument range 0 [detached], how \"6.5536e4\"": true,
   "0,0,95: context range 0 [detached], argument range 0 [detached], how null": true,
   "0,0,96: context range 0 [detached], argument range 0 [detached], how undefined": true,
   "0,0,97: context range 0 [detached], argument range 0 [detached], how true": true,
   "0,0,98: context range 0 [detached], argument range 0 [detached], how false": true,
   "0,0,99: context range 0 [detached], argument range 0 [detached], how \"\"": true,
-  "0,0,9: context range 0 [detached], argument range 0 [detached], how Infinity": true,
+  "0,0,100: context range 0 [detached], argument range 0 [detached], how \"quasit\"": true,
   "0,1,0: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0": true,
   "0,1,1: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1": true,
   "0,1,2: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2": true,
   "0,1,3: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3": true,
+  "0,2,0: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0": true,
+  "0,2,1: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1": true,
+  "0,2,2: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2": true,
+  "0,2,3: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3": true,
+  "0,3,0: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0": true,
+  "0,3,1: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1": true,
+  "0,3,2: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2": true,
+  "0,3,3: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3": true,
+  "0,3,4: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1": true,
+  "0,3,5: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4": true,
+  "0,3,6: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5": true,
+  "0,3,7: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN": true,
+  "0,3,8: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0": true,
+  "0,3,9: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity": true,
+  "0,3,10: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity": true,
+  "0,3,11: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535": true,
+  "0,3,12: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536": true,
+  "0,3,13: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537": true,
+  "0,3,14: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538": true,
+  "0,3,15: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539": true,
+  "0,3,16: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540": true,
+  "0,3,17: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537": true,
+  "0,3,18: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536": true,
+  "0,3,19: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535": true,
+  "0,3,20: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534": true,
+  "0,3,21: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533": true,
+  "0,3,22: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532": true,
+  "0,3,23: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295": true,
+  "0,3,24: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296": true,
+  "0,3,25: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297": true,
+  "0,3,26: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298": true,
+  "0,3,27: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299": true,
+  "0,3,28: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300": true,
+  "0,3,29: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5": true,
+  "0,3,30: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5": true,
+  "0,3,31: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5": true,
+  "0,3,32: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5": true,
+  "0,3,33: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5": true,
+  "0,3,34: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5": true,
+  "0,3,35: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5": true,
+  "0,3,36: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5": true,
+  "0,3,37: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5": true,
+  "0,3,38: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5": true,
+  "0,3,39: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5": true,
+  "0,3,40: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5": true,
+  "0,3,41: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5": true,
+  "0,3,42: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5": true,
+  "0,3,43: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5": true,
+  "0,3,44: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5": true,
+  "0,3,45: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5": true,
+  "0,3,46: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5": true,
+  "0,3,47: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0\"": true,
+  "0,3,48: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"1\"": true,
+  "0,3,49: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"2\"": true,
+  "0,3,50: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"3\"": true,
+  "0,3,51: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1\"": true,
+  "0,3,52: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4\"": true,
+  "0,3,53: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"5\"": true,
+  "0,3,54: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"NaN\"": true,
+  "0,3,55: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0\"": true,
+  "0,3,56: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"Infinity\"": true,
+  "0,3,57: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-Infinity\"": true,
+  "0,3,58: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65535\"": true,
+  "0,3,59: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65536\"": true,
+  "0,3,60: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65537\"": true,
+  "0,3,61: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65538\"": true,
+  "0,3,62: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65539\"": true,
+  "0,3,63: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65540\"": true,
+  "0,3,64: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65537\"": true,
+  "0,3,65: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65536\"": true,
+  "0,3,66: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65535\"": true,
+  "0,3,67: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65534\"": true,
+  "0,3,68: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65533\"": true,
+  "0,3,69: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65532\"": true,
+  "0,3,70: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967295\"": true,
+  "0,3,71: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967296\"": true,
+  "0,3,72: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967297\"": true,
+  "0,3,73: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967298\"": true,
+  "0,3,74: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967299\"": true,
+  "0,3,75: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967300\"": true,
+  "0,3,76: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-0.5\"": true,
+  "0,3,77: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0.5\"": true,
+  "0,3,78: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"1.5\"": true,
+  "0,3,79: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"2.5\"": true,
+  "0,3,80: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"3.5\"": true,
+  "0,3,81: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4.5\"": true,
+  "0,3,82: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1.5\"": true,
+  "0,3,83: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-0.5\"": true,
+  "0,3,84: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0.5\"": true,
+  "0,3,85: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"1.5\"": true,
+  "0,3,86: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"2.5\"": true,
+  "0,3,87: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"3.5\"": true,
+  "0,3,88: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-73.5\"": true,
+  "0,3,89: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-72.5\"": true,
+  "0,3,90: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-71.5\"": true,
+  "0,3,91: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-70.5\"": true,
+  "0,3,92: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-69.5\"": true,
+  "0,3,93: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-68.5\"": true,
+  "0,3,94: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"6.5536e4\"": true,
+  "0,3,95: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null": true,
+  "0,3,96: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined": true,
+  "0,3,97: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true": true,
+  "0,3,98: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false": true,
+  "0,3,99: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"\"": true,
+  "0,3,100: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"quasit\"": true,
+  "0,4,0: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0": true,
+  "0,4,1: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1": true,
+  "0,4,2: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2": true,
+  "0,4,3: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3": true,
+  "0,5,0: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0": true,
+  "0,5,1: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1": true,
+  "0,5,2: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2": true,
+  "0,5,3: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3": true,
+  "0,6,0: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 0": true,
+  "0,6,1: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 1": true,
+  "0,6,2: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 2": true,
+  "0,6,3: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 3": true,
+  "0,7,0: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 0": true,
+  "0,7,1: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 1": true,
+  "0,7,2: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 2": true,
+  "0,7,3: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 3": true,
+  "0,8,0: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0": true,
+  "0,8,1: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1": true,
+  "0,8,2: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2": true,
+  "0,8,3: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3": true,
+  "0,9,0: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0": true,
+  "0,9,1: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1": true,
+  "0,9,2: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2": true,
+  "0,9,3: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3": true,
   "0,10,0: context range 0 [detached], argument range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], how 0": true,
   "0,10,1: context range 0 [detached], argument range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], how 1": true,
   "0,10,2: context range 0 [detached], argument range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], how 2": true,
   "0,10,3: context range 0 [detached], argument range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], how 3": true,
   "0,11,0: context range 0 [detached], argument range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0": true,
   "0,11,1: context range 0 [detached], argument range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1": true,
   "0,11,2: context range 0 [detached], argument range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2": true,
   "0,11,3: context range 0 [detached], argument range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3": true,
@@ -139,121 +268,117 @@
   "0,18,0: context range 0 [detached], argument range 18 [document.head, 1, document.head, 1], how 0": true,
   "0,18,1: context range 0 [detached], argument range 18 [document.head, 1, document.head, 1], how 1": true,
   "0,18,2: context range 0 [detached], argument range 18 [document.head, 1, document.head, 1], how 2": true,
   "0,18,3: context range 0 [detached], argument range 18 [document.head, 1, document.head, 1], how 3": true,
   "0,19,0: context range 0 [detached], argument range 19 [document.body, 4, document.body, 5], how 0": true,
   "0,19,1: context range 0 [detached], argument range 19 [document.body, 4, document.body, 5], how 1": true,
   "0,19,2: context range 0 [detached], argument range 19 [document.body, 4, document.body, 5], how 2": true,
   "0,19,3: context range 0 [detached], argument range 19 [document.body, 4, document.body, 5], how 3": true,
-  "0,2,0: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0": true,
-  "0,2,1: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1": true,
-  "0,2,2: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2": true,
-  "0,2,3: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3": true,
   "0,20,0: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0": true,
-  "0,20,100: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"quasit\"": true,
+  "0,20,1: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1": true,
+  "0,20,2: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2": true,
+  "0,20,3: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3": true,
+  "0,20,4: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1": true,
+  "0,20,5: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4": true,
+  "0,20,6: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5": true,
+  "0,20,7: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN": true,
+  "0,20,8: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0": true,
+  "0,20,9: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity": true,
   "0,20,10: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -Infinity": true,
   "0,20,11: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535": true,
   "0,20,12: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65536": true,
   "0,20,13: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65537": true,
   "0,20,14: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65538": true,
   "0,20,15: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65539": true,
   "0,20,16: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540": true,
   "0,20,17: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537": true,
   "0,20,18: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65536": true,
   "0,20,19: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65535": true,
-  "0,20,1: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1": true,
   "0,20,20: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65534": true,
   "0,20,21: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65533": true,
   "0,20,22: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532": true,
   "0,20,23: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295": true,
   "0,20,24: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967296": true,
   "0,20,25: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967297": true,
   "0,20,26: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967298": true,
   "0,20,27: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967299": true,
   "0,20,28: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300": true,
   "0,20,29: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5": true,
-  "0,20,2: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2": true,
   "0,20,30: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5": true,
   "0,20,31: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5": true,
   "0,20,32: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5": true,
   "0,20,33: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5": true,
   "0,20,34: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5": true,
   "0,20,35: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5": true,
   "0,20,36: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5": true,
   "0,20,37: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5": true,
   "0,20,38: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5": true,
   "0,20,39: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5": true,
-  "0,20,3: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3": true,
   "0,20,40: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5": true,
   "0,20,41: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5": true,
   "0,20,42: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5": true,
   "0,20,43: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5": true,
   "0,20,44: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5": true,
   "0,20,45: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5": true,
   "0,20,46: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5": true,
   "0,20,47: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"0\"": true,
   "0,20,48: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"1\"": true,
   "0,20,49: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"2\"": true,
-  "0,20,4: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1": true,
   "0,20,50: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"3\"": true,
   "0,20,51: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1\"": true,
   "0,20,52: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4\"": true,
   "0,20,53: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"5\"": true,
   "0,20,54: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"NaN\"": true,
   "0,20,55: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"0\"": true,
   "0,20,56: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"Infinity\"": true,
   "0,20,57: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-Infinity\"": true,
   "0,20,58: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65535\"": true,
   "0,20,59: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65536\"": true,
-  "0,20,5: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4": true,
   "0,20,60: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65537\"": true,
   "0,20,61: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65538\"": true,
   "0,20,62: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65539\"": true,
   "0,20,63: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65540\"": true,
   "0,20,64: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65537\"": true,
   "0,20,65: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65536\"": true,
   "0,20,66: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65535\"": true,
   "0,20,67: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65534\"": true,
   "0,20,68: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65533\"": true,
   "0,20,69: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65532\"": true,
-  "0,20,6: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5": true,
   "0,20,70: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967295\"": true,
   "0,20,71: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967296\"": true,
   "0,20,72: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967297\"": true,
   "0,20,73: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967298\"": true,
   "0,20,74: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967299\"": true,
   "0,20,75: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967300\"": true,
   "0,20,76: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-0.5\"": true,
   "0,20,77: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"0.5\"": true,
   "0,20,78: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"1.5\"": true,
   "0,20,79: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"2.5\"": true,
-  "0,20,7: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN": true,
   "0,20,80: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"3.5\"": true,
   "0,20,81: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4.5\"": true,
   "0,20,82: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1.5\"": true,
   "0,20,83: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-0.5\"": true,
   "0,20,84: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"0.5\"": true,
   "0,20,85: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"1.5\"": true,
   "0,20,86: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"2.5\"": true,
   "0,20,87: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"3.5\"": true,
   "0,20,88: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-73.5\"": true,
   "0,20,89: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-72.5\"": true,
-  "0,20,8: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0": true,
   "0,20,90: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-71.5\"": true,
   "0,20,91: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-70.5\"": true,
   "0,20,92: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-69.5\"": true,
   "0,20,93: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-68.5\"": true,
   "0,20,94: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"6.5536e4\"": true,
   "0,20,95: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how null": true,
   "0,20,96: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how undefined": true,
   "0,20,97: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how true": true,
   "0,20,98: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how false": true,
   "0,20,99: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"\"": true,
-  "0,20,9: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity": true,
+  "0,20,100: context range 0 [detached], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"quasit\"": true,
   "0,21,0: context range 0 [detached], argument range 21 [foreignDoc.head, 1, foreignDoc.head, 1], how 0": true,
   "0,21,1: context range 0 [detached], argument range 21 [foreignDoc.head, 1, foreignDoc.head, 1], how 1": true,
   "0,21,2: context range 0 [detached], argument range 21 [foreignDoc.head, 1, foreignDoc.head, 1], how 2": true,
   "0,21,3: context range 0 [detached], argument range 21 [foreignDoc.head, 1, foreignDoc.head, 1], how 3": true,
   "0,22,0: context range 0 [detached], argument range 22 [foreignDoc.body, 0, foreignDoc.body, 0], how 0": true,
   "0,22,1: context range 0 [detached], argument range 22 [foreignDoc.body, 0, foreignDoc.body, 0], how 1": true,
   "0,22,2: context range 0 [detached], argument range 22 [foreignDoc.body, 0, foreignDoc.body, 0], how 2": true,
   "0,22,3: context range 0 [detached], argument range 22 [foreignDoc.body, 0, foreignDoc.body, 0], how 3": true,
@@ -277,217 +402,116 @@
   "0,27,1: context range 0 [detached], argument range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1": true,
   "0,27,2: context range 0 [detached], argument range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2": true,
   "0,27,3: context range 0 [detached], argument range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3": true,
   "0,28,0: context range 0 [detached], argument range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0": true,
   "0,28,1: context range 0 [detached], argument range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1": true,
   "0,28,2: context range 0 [detached], argument range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2": true,
   "0,28,3: context range 0 [detached], argument range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3": true,
   "0,29,0: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 0": true,
-  "0,29,100: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"quasit\"": true,
+  "0,29,1: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 1": true,
+  "0,29,2: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 2": true,
+  "0,29,3: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 3": true,
+  "0,29,4: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1": true,
+  "0,29,5: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4": true,
+  "0,29,6: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 5": true,
+  "0,29,7: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how NaN": true,
+  "0,29,8: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -0": true,
+  "0,29,9: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how Infinity": true,
   "0,29,10: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -Infinity": true,
   "0,29,11: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65535": true,
   "0,29,12: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65536": true,
   "0,29,13: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65537": true,
   "0,29,14: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65538": true,
   "0,29,15: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65539": true,
   "0,29,16: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65540": true,
   "0,29,17: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65537": true,
   "0,29,18: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65536": true,
   "0,29,19: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65535": true,
-  "0,29,1: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 1": true,
   "0,29,20: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65534": true,
   "0,29,21: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65533": true,
   "0,29,22: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65532": true,
   "0,29,23: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967295": true,
   "0,29,24: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967296": true,
   "0,29,25: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967297": true,
   "0,29,26: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967298": true,
   "0,29,27: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967299": true,
   "0,29,28: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967300": true,
   "0,29,29: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -0.5": true,
-  "0,29,2: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 2": true,
   "0,29,30: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 0.5": true,
   "0,29,31: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 1.5": true,
   "0,29,32: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 2.5": true,
   "0,29,33: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 3.5": true,
   "0,29,34: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4.5": true,
   "0,29,35: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1.5": true,
   "0,29,36: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -0.5": true,
   "0,29,37: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 0.5": true,
   "0,29,38: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 1.5": true,
   "0,29,39: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 2.5": true,
-  "0,29,3: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 3": true,
   "0,29,40: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 3.5": true,
   "0,29,41: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -73.5": true,
   "0,29,42: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -72.5": true,
   "0,29,43: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -71.5": true,
   "0,29,44: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -70.5": true,
   "0,29,45: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -69.5": true,
   "0,29,46: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -68.5": true,
   "0,29,47: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"0\"": true,
   "0,29,48: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"1\"": true,
   "0,29,49: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"2\"": true,
-  "0,29,4: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1": true,
   "0,29,50: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"3\"": true,
   "0,29,51: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1\"": true,
   "0,29,52: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4\"": true,
   "0,29,53: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"5\"": true,
   "0,29,54: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"NaN\"": true,
   "0,29,55: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"0\"": true,
   "0,29,56: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"Infinity\"": true,
   "0,29,57: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-Infinity\"": true,
   "0,29,58: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65535\"": true,
   "0,29,59: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65536\"": true,
-  "0,29,5: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4": true,
   "0,29,60: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65537\"": true,
   "0,29,61: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65538\"": true,
   "0,29,62: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65539\"": true,
   "0,29,63: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65540\"": true,
   "0,29,64: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65537\"": true,
   "0,29,65: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65536\"": true,
   "0,29,66: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65535\"": true,
   "0,29,67: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65534\"": true,
   "0,29,68: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65533\"": true,
   "0,29,69: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65532\"": true,
-  "0,29,6: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 5": true,
   "0,29,70: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967295\"": true,
   "0,29,71: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967296\"": true,
   "0,29,72: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967297\"": true,
   "0,29,73: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967298\"": true,
   "0,29,74: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967299\"": true,
   "0,29,75: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967300\"": true,
   "0,29,76: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-0.5\"": true,
   "0,29,77: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"0.5\"": true,
   "0,29,78: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"1.5\"": true,
   "0,29,79: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"2.5\"": true,
-  "0,29,7: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how NaN": true,
   "0,29,80: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"3.5\"": true,
   "0,29,81: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4.5\"": true,
   "0,29,82: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1.5\"": true,
   "0,29,83: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-0.5\"": true,
   "0,29,84: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"0.5\"": true,
   "0,29,85: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"1.5\"": true,
   "0,29,86: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"2.5\"": true,
   "0,29,87: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"3.5\"": true,
   "0,29,88: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-73.5\"": true,
   "0,29,89: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-72.5\"": true,
-  "0,29,8: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -0": true,
   "0,29,90: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-71.5\"": true,
   "0,29,91: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-70.5\"": true,
   "0,29,92: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-69.5\"": true,
   "0,29,93: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-68.5\"": true,
   "0,29,94: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"6.5536e4\"": true,
   "0,29,95: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how null": true,
   "0,29,96: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how undefined": true,
   "0,29,97: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how true": true,
   "0,29,98: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how false": true,
   "0,29,99: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"\"": true,
-  "0,29,9: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how Infinity": true,
-  "0,3,0: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0": true,
-  "0,3,100: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"quasit\"": true,
-  "0,3,10: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity": true,
-  "0,3,11: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535": true,
-  "0,3,12: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536": true,
-  "0,3,13: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537": true,
-  "0,3,14: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538": true,
-  "0,3,15: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539": true,
-  "0,3,16: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540": true,
-  "0,3,17: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537": true,
-  "0,3,18: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536": true,
-  "0,3,19: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535": true,
-  "0,3,1: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1": true,
-  "0,3,20: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534": true,
-  "0,3,21: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533": true,
-  "0,3,22: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532": true,
-  "0,3,23: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295": true,
-  "0,3,24: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296": true,
-  "0,3,25: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297": true,
-  "0,3,26: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298": true,
-  "0,3,27: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299": true,
-  "0,3,28: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300": true,
-  "0,3,29: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5": true,
-  "0,3,2: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2": true,
-  "0,3,30: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5": true,
-  "0,3,31: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5": true,
-  "0,3,32: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5": true,
-  "0,3,33: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5": true,
-  "0,3,34: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5": true,
-  "0,3,35: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5": true,
-  "0,3,36: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5": true,
-  "0,3,37: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5": true,
-  "0,3,38: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5": true,
-  "0,3,39: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5": true,
-  "0,3,3: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3": true,
-  "0,3,40: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5": true,
-  "0,3,41: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5": true,
-  "0,3,42: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5": true,
-  "0,3,43: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5": true,
-  "0,3,44: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5": true,
-  "0,3,45: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5": true,
-  "0,3,46: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5": true,
-  "0,3,47: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0\"": true,
-  "0,3,48: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"1\"": true,
-  "0,3,49: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"2\"": true,
-  "0,3,4: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1": true,
-  "0,3,50: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"3\"": true,
-  "0,3,51: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1\"": true,
-  "0,3,52: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4\"": true,
-  "0,3,53: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"5\"": true,
-  "0,3,54: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"NaN\"": true,
-  "0,3,55: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0\"": true,
-  "0,3,56: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"Infinity\"": true,
-  "0,3,57: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-Infinity\"": true,
-  "0,3,58: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65535\"": true,
-  "0,3,59: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65536\"": true,
-  "0,3,5: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4": true,
-  "0,3,60: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65537\"": true,
-  "0,3,61: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65538\"": true,
-  "0,3,62: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65539\"": true,
-  "0,3,63: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65540\"": true,
-  "0,3,64: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65537\"": true,
-  "0,3,65: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65536\"": true,
-  "0,3,66: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65535\"": true,
-  "0,3,67: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65534\"": true,
-  "0,3,68: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65533\"": true,
-  "0,3,69: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65532\"": true,
-  "0,3,6: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5": true,
-  "0,3,70: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967295\"": true,
-  "0,3,71: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967296\"": true,
-  "0,3,72: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967297\"": true,
-  "0,3,73: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967298\"": true,
-  "0,3,74: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967299\"": true,
-  "0,3,75: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967300\"": true,
-  "0,3,76: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-0.5\"": true,
-  "0,3,77: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0.5\"": true,
-  "0,3,78: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"1.5\"": true,
-  "0,3,79: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"2.5\"": true,
-  "0,3,7: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN": true,
-  "0,3,80: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"3.5\"": true,
-  "0,3,81: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4.5\"": true,
-  "0,3,82: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1.5\"": true,
-  "0,3,83: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-0.5\"": true,
-  "0,3,84: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"0.5\"": true,
-  "0,3,85: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"1.5\"": true,
-  "0,3,86: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"2.5\"": true,
-  "0,3,87: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"3.5\"": true,
-  "0,3,88: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-73.5\"": true,
-  "0,3,89: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-72.5\"": true,
-  "0,3,8: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0": true,
-  "0,3,90: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-71.5\"": true,
-  "0,3,91: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-70.5\"": true,
-  "0,3,92: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-69.5\"": true,
-  "0,3,93: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-68.5\"": true,
-  "0,3,94: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"6.5536e4\"": true,
-  "0,3,95: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null": true,
-  "0,3,96: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined": true,
-  "0,3,97: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true": true,
-  "0,3,98: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false": true,
-  "0,3,99: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"\"": true,
-  "0,3,9: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity": true,
+  "0,29,100: context range 0 [detached], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"quasit\"": true,
   "0,30,0: context range 0 [detached], argument range 30 [paras[0], 0, paras[0].firstChild, 7], how 0": true,
   "0,30,1: context range 0 [detached], argument range 30 [paras[0], 0, paras[0].firstChild, 7], how 1": true,
   "0,30,2: context range 0 [detached], argument range 30 [paras[0], 0, paras[0].firstChild, 7], how 2": true,
   "0,30,3: context range 0 [detached], argument range 30 [paras[0], 0, paras[0].firstChild, 7], how 3": true,
   "0,31,0: context range 0 [detached], argument range 31 [testDiv, 2, paras[4], 1], how 0": true,
   "0,31,1: context range 0 [detached], argument range 31 [testDiv, 2, paras[4], 1], how 1": true,
   "0,31,2: context range 0 [detached], argument range 31 [testDiv, 2, paras[4], 1], how 2": true,
   "0,31,3: context range 0 [detached], argument range 31 [testDiv, 2, paras[4], 1], how 3": true,
@@ -515,120 +539,116 @@
   "0,37,1: context range 0 [detached], argument range 37 [document, 1, document, 2], how 1": true,
   "0,37,2: context range 0 [detached], argument range 37 [document, 1, document, 2], how 2": true,
   "0,37,3: context range 0 [detached], argument range 37 [document, 1, document, 2], how 3": true,
   "0,38,0: context range 0 [detached], argument range 38 [comment, 2, comment, 3], how 0": true,
   "0,38,1: context range 0 [detached], argument range 38 [comment, 2, comment, 3], how 1": true,
   "0,38,2: context range 0 [detached], argument range 38 [comment, 2, comment, 3], how 2": true,
   "0,38,3: context range 0 [detached], argument range 38 [comment, 2, comment, 3], how 3": true,
   "0,39,0: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 0": true,
-  "0,39,100: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"quasit\"": true,
+  "0,39,1: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 1": true,
+  "0,39,2: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 2": true,
+  "0,39,3: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 3": true,
+  "0,39,4: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -1": true,
+  "0,39,5: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4": true,
+  "0,39,6: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 5": true,
+  "0,39,7: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how NaN": true,
+  "0,39,8: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -0": true,
+  "0,39,9: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how Infinity": true,
   "0,39,10: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -Infinity": true,
   "0,39,11: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 65535": true,
   "0,39,12: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 65536": true,
   "0,39,13: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 65537": true,
   "0,39,14: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 65538": true,
   "0,39,15: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 65539": true,
   "0,39,16: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 65540": true,
   "0,39,17: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -65537": true,
   "0,39,18: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -65536": true,
   "0,39,19: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -65535": true,
-  "0,39,1: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 1": true,
   "0,39,20: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -65534": true,
   "0,39,21: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -65533": true,
   "0,39,22: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -65532": true,
   "0,39,23: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4294967295": true,
   "0,39,24: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4294967296": true,
   "0,39,25: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4294967297": true,
   "0,39,26: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4294967298": true,
   "0,39,27: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4294967299": true,
   "0,39,28: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4294967300": true,
   "0,39,29: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -0.5": true,
-  "0,39,2: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 2": true,
   "0,39,30: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 0.5": true,
   "0,39,31: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 1.5": true,
   "0,39,32: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 2.5": true,
   "0,39,33: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 3.5": true,
   "0,39,34: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4.5": true,
   "0,39,35: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -1.5": true,
   "0,39,36: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -0.5": true,
   "0,39,37: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 0.5": true,
   "0,39,38: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 1.5": true,
   "0,39,39: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 2.5": true,
-  "0,39,3: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 3": true,
   "0,39,40: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 3.5": true,
   "0,39,41: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -73.5": true,
   "0,39,42: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -72.5": true,
   "0,39,43: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -71.5": true,
   "0,39,44: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -70.5": true,
   "0,39,45: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -69.5": true,
   "0,39,46: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -68.5": true,
   "0,39,47: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"0\"": true,
   "0,39,48: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"1\"": true,
   "0,39,49: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"2\"": true,
-  "0,39,4: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -1": true,
   "0,39,50: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"3\"": true,
   "0,39,51: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-1\"": true,
   "0,39,52: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4\"": true,
   "0,39,53: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"5\"": true,
   "0,39,54: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"NaN\"": true,
   "0,39,55: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"0\"": true,
   "0,39,56: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"Infinity\"": true,
   "0,39,57: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-Infinity\"": true,
   "0,39,58: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"65535\"": true,
   "0,39,59: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"65536\"": true,
-  "0,39,5: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 4": true,
   "0,39,60: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"65537\"": true,
   "0,39,61: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"65538\"": true,
   "0,39,62: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"65539\"": true,
   "0,39,63: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"65540\"": true,
   "0,39,64: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-65537\"": true,
   "0,39,65: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-65536\"": true,
   "0,39,66: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-65535\"": true,
   "0,39,67: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-65534\"": true,
   "0,39,68: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-65533\"": true,
   "0,39,69: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-65532\"": true,
-  "0,39,6: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how 5": true,
   "0,39,70: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4294967295\"": true,
   "0,39,71: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4294967296\"": true,
   "0,39,72: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4294967297\"": true,
   "0,39,73: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4294967298\"": true,
   "0,39,74: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4294967299\"": true,
   "0,39,75: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4294967300\"": true,
   "0,39,76: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-0.5\"": true,
   "0,39,77: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"0.5\"": true,
   "0,39,78: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"1.5\"": true,
   "0,39,79: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"2.5\"": true,
-  "0,39,7: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how NaN": true,
   "0,39,80: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"3.5\"": true,
   "0,39,81: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"4.5\"": true,
   "0,39,82: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-1.5\"": true,
   "0,39,83: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-0.5\"": true,
   "0,39,84: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"0.5\"": true,
   "0,39,85: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"1.5\"": true,
   "0,39,86: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"2.5\"": true,
   "0,39,87: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"3.5\"": true,
   "0,39,88: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-73.5\"": true,
   "0,39,89: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-72.5\"": true,
-  "0,39,8: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how -0": true,
   "0,39,90: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-71.5\"": true,
   "0,39,91: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-70.5\"": true,
   "0,39,92: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-69.5\"": true,
   "0,39,93: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"-68.5\"": true,
   "0,39,94: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"6.5536e4\"": true,
   "0,39,95: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how null": true,
   "0,39,96: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how undefined": true,
   "0,39,97: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how true": true,
   "0,39,98: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how false": true,
   "0,39,99: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"\"": true,
-  "0,39,9: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how Infinity": true,
-  "0,4,0: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0": true,
-  "0,4,1: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1": true,
-  "0,4,2: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2": true,
-  "0,4,3: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3": true,
+  "0,39,100: context range 0 [detached], argument range 39 [testDiv, 0, comment, 5], how \"quasit\"": true,
   "0,40,0: context range 0 [detached], argument range 40 [paras[2].firstChild, 4, comment, 2], how 0": true,
   "0,40,1: context range 0 [detached], argument range 40 [paras[2].firstChild, 4, comment, 2], how 1": true,
   "0,40,2: context range 0 [detached], argument range 40 [paras[2].firstChild, 4, comment, 2], how 2": true,
   "0,40,3: context range 0 [detached], argument range 40 [paras[2].firstChild, 4, comment, 2], how 3": true,
   "0,41,0: context range 0 [detached], argument range 41 [paras[3], 1, comment, 8], how 0": true,
   "0,41,1: context range 0 [detached], argument range 41 [paras[3], 1, comment, 8], how 1": true,
   "0,41,2: context range 0 [detached], argument range 41 [paras[3], 1, comment, 8], how 2": true,
   "0,41,3: context range 0 [detached], argument range 41 [paras[3], 1, comment, 8], how 3": true,
@@ -659,20 +679,16 @@
   "0,48,0: context range 0 [detached], argument range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], how 0": true,
   "0,48,1: context range 0 [detached], argument range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], how 1": true,
   "0,48,2: context range 0 [detached], argument range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], how 2": true,
   "0,48,3: context range 0 [detached], argument range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], how 3": true,
   "0,49,0: context range 0 [detached], argument range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0": true,
   "0,49,1: context range 0 [detached], argument range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1": true,
   "0,49,2: context range 0 [detached], argument range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2": true,
   "0,49,3: context range 0 [detached], argument range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3": true,
-  "0,5,0: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0": true,
-  "0,5,1: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1": true,
-  "0,5,2: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2": true,
-  "0,5,3: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3": true,
   "0,50,0: context range 0 [detached], argument range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], how 0": true,
   "0,50,1: context range 0 [detached], argument range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], how 1": true,
   "0,50,2: context range 0 [detached], argument range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], how 2": true,
   "0,50,3: context range 0 [detached], argument range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], how 3": true,
   "0,51,0: context range 0 [detached], argument range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0": true,
   "0,51,1: context range 0 [detached], argument range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1": true,
   "0,51,2: context range 0 [detached], argument range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2": true,
   "0,51,3: context range 0 [detached], argument range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3": true,
@@ -703,40 +719,289 @@
   "0,58,0: context range 0 [detached], argument range 58 [foreignDocfrag, 0, foreignDocfrag, 0], how 0": true,
   "0,58,1: context range 0 [detached], argument range 58 [foreignDocfrag, 0, foreignDocfrag, 0], how 1": true,
   "0,58,2: context range 0 [detached], argument range 58 [foreignDocfrag, 0, foreignDocfrag, 0], how 2": true,
   "0,58,3: context range 0 [detached], argument range 58 [foreignDocfrag, 0, foreignDocfrag, 0], how 3": true,
   "0,59,0: context range 0 [detached], argument range 59 [xmlDocfrag, 0, xmlDocfrag, 0], how 0": true,
   "0,59,1: context range 0 [detached], argument range 59 [xmlDocfrag, 0, xmlDocfrag, 0], how 1": true,
   "0,59,2: context range 0 [detached], argument range 59 [xmlDocfrag, 0, xmlDocfrag, 0], how 2": true,
   "0,59,3: context range 0 [detached], argument range 59 [xmlDocfrag, 0, xmlDocfrag, 0], how 3": true,
-  "0,6,0: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 0": true,
-  "0,6,1: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 1": true,
-  "0,6,2: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 2": true,
-  "0,6,3: context range 0 [detached], argument range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], how 3": true,
   "0,60,0: context range 0 [detached], argument range same as first range, how 0": true,
   "0,60,1: context range 0 [detached], argument range same as first range, how 1": true,
   "0,60,2: context range 0 [detached], argument range same as first range, how 2": true,
   "0,60,3: context range 0 [detached], argument range same as first range, how 3": true,
-  "0,7,0: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 0": true,
-  "0,7,1: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 1": true,
-  "0,7,2: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 2": true,
-  "0,7,3: context range 0 [detached], argument range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], how 3": true,
-  "0,8,0: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0": true,
-  "0,8,1: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1": true,
-  "0,8,2: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2": true,
-  "0,8,3: context range 0 [detached], argument range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3": true,
-  "0,9,0: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0": true,
-  "0,9,1: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1": true,
-  "0,9,2: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2": true,
-  "0,9,3: context range 0 [detached], argument range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3": true,
   "1,0,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 0": true,
   "1,0,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 1": true,
   "1,0,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 2": true,
   "1,0,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 3": true,
+  "2,0,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 0": true,
+  "2,0,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 1": true,
+  "2,0,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 2": true,
+  "2,0,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 3": true,
+  "3,0,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0": true,
+  "3,0,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1": true,
+  "3,0,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2": true,
+  "3,0,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3": true,
+  "3,0,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -1": true,
+  "3,0,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4": true,
+  "3,0,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 5": true,
+  "3,0,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how NaN": true,
+  "3,0,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0": true,
+  "3,0,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how Infinity": true,
+  "3,0,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -Infinity": true,
+  "3,0,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65535": true,
+  "3,0,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65536": true,
+  "3,0,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65537": true,
+  "3,0,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65538": true,
+  "3,0,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65539": true,
+  "3,0,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65540": true,
+  "3,0,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65537": true,
+  "3,0,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65536": true,
+  "3,0,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65535": true,
+  "3,0,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65534": true,
+  "3,0,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65533": true,
+  "3,0,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65532": true,
+  "3,0,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967295": true,
+  "3,0,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967296": true,
+  "3,0,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967297": true,
+  "3,0,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967298": true,
+  "3,0,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967299": true,
+  "3,0,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967300": true,
+  "3,0,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0.5": true,
+  "3,0,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0.5": true,
+  "3,0,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1.5": true,
+  "3,0,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2.5": true,
+  "3,0,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3.5": true,
+  "3,0,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4.5": true,
+  "3,0,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -1.5": true,
+  "3,0,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0.5": true,
+  "3,0,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0.5": true,
+  "3,0,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1.5": true,
+  "3,0,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2.5": true,
+  "3,0,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3.5": true,
+  "3,0,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -73.5": true,
+  "3,0,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -72.5": true,
+  "3,0,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -71.5": true,
+  "3,0,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -70.5": true,
+  "3,0,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -69.5": true,
+  "3,0,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -68.5": true,
+  "3,0,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0\"": true,
+  "3,0,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"1\"": true,
+  "3,0,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"2\"": true,
+  "3,0,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"3\"": true,
+  "3,0,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-1\"": true,
+  "3,0,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4\"": true,
+  "3,0,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"5\"": true,
+  "3,0,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"NaN\"": true,
+  "3,0,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0\"": true,
+  "3,0,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"Infinity\"": true,
+  "3,0,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-Infinity\"": true,
+  "3,0,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65535\"": true,
+  "3,0,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65536\"": true,
+  "3,0,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65537\"": true,
+  "3,0,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65538\"": true,
+  "3,0,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65539\"": true,
+  "3,0,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65540\"": true,
+  "3,0,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65537\"": true,
+  "3,0,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65536\"": true,
+  "3,0,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65535\"": true,
+  "3,0,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65534\"": true,
+  "3,0,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65533\"": true,
+  "3,0,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65532\"": true,
+  "3,0,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967295\"": true,
+  "3,0,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967296\"": true,
+  "3,0,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967297\"": true,
+  "3,0,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967298\"": true,
+  "3,0,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967299\"": true,
+  "3,0,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967300\"": true,
+  "3,0,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-0.5\"": true,
+  "3,0,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0.5\"": true,
+  "3,0,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"1.5\"": true,
+  "3,0,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"2.5\"": true,
+  "3,0,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"3.5\"": true,
+  "3,0,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4.5\"": true,
+  "3,0,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-1.5\"": true,
+  "3,0,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-0.5\"": true,
+  "3,0,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0.5\"": true,
+  "3,0,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"1.5\"": true,
+  "3,0,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"2.5\"": true,
+  "3,0,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"3.5\"": true,
+  "3,0,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-73.5\"": true,
+  "3,0,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-72.5\"": true,
+  "3,0,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-71.5\"": true,
+  "3,0,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-70.5\"": true,
+  "3,0,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-69.5\"": true,
+  "3,0,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-68.5\"": true,
+  "3,0,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"6.5536e4\"": true,
+  "3,0,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how null": true,
+  "3,0,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how undefined": true,
+  "3,0,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how true": true,
+  "3,0,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how false": true,
+  "3,0,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"\"": true,
+  "3,0,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"quasit\"": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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": true,
+  "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 \"-1\"": true,
+  "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 \"4\"": true,
+  "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 \"5\"": true,
+  "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 \"65535\"": true,
+  "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 \"65540\"": true,
+  "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 \"-65537\"": true,
+  "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 \"-65532\"": true,
+  "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 \"4294967295\"": true,
+  "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 \"4294967300\"": true,
+  "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 \"4.5\"": true,
+  "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 \"-1.5\"": true,
+  "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 \"-73.5\"": true,
+  "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 \"-72.5\"": true,
+  "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 \"-71.5\"": true,
+  "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 \"-70.5\"": true,
+  "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 \"-69.5\"": true,
+  "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 \"-68.5\"": true,
+  "3,20,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1": true,
+  "3,20,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4": true,
+  "3,20,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5": true,
+  "3,20,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535": true,
+  "3,20,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540": true,
+  "3,20,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537": true,
+  "3,20,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532": true,
+  "3,20,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295": true,
+  "3,20,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300": true,
+  "3,20,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5": true,
+  "3,20,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5": true,
+  "3,20,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5": true,
+  "3,20,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5": true,
+  "3,20,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5": true,
+  "3,20,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5": true,
+  "3,20,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5": true,
+  "3,20,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5": true,
+  "3,20,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1\"": true,
+  "3,20,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4\"": true,
+  "3,20,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"5\"": true,
+  "3,20,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65535\"": true,
+  "3,20,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65540\"": true,
+  "3,20,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65537\"": true,
+  "3,20,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65532\"": true,
+  "3,20,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967295\"": true,
+  "3,20,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967300\"": true,
+  "3,20,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4.5\"": true,
+  "3,20,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1.5\"": true,
+  "3,20,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-73.5\"": true,
+  "3,20,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-72.5\"": true,
+  "3,20,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-71.5\"": true,
+  "3,20,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-70.5\"": true,
+  "3,20,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-69.5\"": true,
+  "3,20,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-68.5\"": true,
+  "3,29,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1": true,
+  "3,29,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4": true,
+  "3,29,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 5": true,
+  "3,29,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65535": true,
+  "3,29,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65540": true,
+  "3,29,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65537": true,
+  "3,29,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65532": true,
+  "3,29,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967295": true,
+  "3,29,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967300": true,
+  "3,29,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4.5": true,
+  "3,29,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1.5": true,
+  "3,29,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -73.5": true,
+  "3,29,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -72.5": true,
+  "3,29,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -71.5": true,
+  "3,29,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -70.5": true,
+  "3,29,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -69.5": true,
+  "3,29,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -68.5": true,
+  "3,29,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1\"": true,
+  "3,29,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4\"": true,
+  "3,29,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"5\"": true,
+  "3,29,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65535\"": true,
+  "3,29,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65540\"": true,
+  "3,29,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65537\"": true,
+  "3,29,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65532\"": true,
+  "3,29,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967295\"": true,
+  "3,29,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967300\"": true,
+  "3,29,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4.5\"": true,
+  "3,29,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1.5\"": true,
+  "3,29,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-73.5\"": true,
+  "3,29,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-72.5\"": true,
+  "3,29,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-71.5\"": true,
+  "3,29,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-70.5\"": true,
+  "3,29,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-69.5\"": true,
+  "3,29,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-68.5\"": true,
+  "3,39,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -1": true,
+  "3,39,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 4": true,
+  "3,39,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 5": true,
+  "3,39,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 65535": true,
+  "3,39,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 65540": true,
+  "3,39,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -65537": true,
+  "3,39,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -65532": true,
+  "3,39,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 4294967295": true,
+  "3,39,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 4294967300": true,
+  "3,39,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how 4.5": true,
+  "3,39,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -1.5": true,
+  "3,39,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -73.5": true,
+  "3,39,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -72.5": true,
+  "3,39,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -71.5": true,
+  "3,39,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -70.5": true,
+  "3,39,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -69.5": true,
+  "3,39,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how -68.5": true,
+  "3,39,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-1\"": true,
+  "3,39,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"4\"": true,
+  "3,39,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"5\"": true,
+  "3,39,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"65535\"": true,
+  "3,39,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"65540\"": true,
+  "3,39,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-65537\"": true,
+  "3,39,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-65532\"": true,
+  "3,39,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"4294967295\"": true,
+  "3,39,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"4294967300\"": true,
+  "3,39,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"4.5\"": true,
+  "3,39,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-1.5\"": true,
+  "3,39,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-73.5\"": true,
+  "3,39,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-72.5\"": true,
+  "3,39,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-71.5\"": true,
+  "3,39,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-70.5\"": true,
+  "3,39,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-69.5\"": true,
+  "3,39,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 39 [testDiv, 0, comment, 5], how \"-68.5\"": true,
+  "4,0,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 0": true,
+  "4,0,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 1": true,
+  "4,0,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 2": true,
+  "4,0,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 3": true,
+  "5,0,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 0": true,
+  "5,0,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 1": true,
+  "5,0,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 2": true,
+  "5,0,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 3": true,
+  "6,0,0: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 0": true,
+  "6,0,1: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 1": true,
+  "6,0,2: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 2": true,
+  "6,0,3: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 3": true,
+  "7,0,0: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 0": true,
+  "7,0,1: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 1": true,
+  "7,0,2: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 2": true,
+  "7,0,3: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 3": true,
+  "8,0,0: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 0": true,
+  "8,0,1: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 1": true,
+  "8,0,2: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 2": true,
+  "8,0,3: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 3": true,
+  "9,0,0: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 0": true,
+  "9,0,1: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 1": true,
+  "9,0,2: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 2": true,
+  "9,0,3: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 3": true,
   "10,0,0: context range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], argument range 0 [detached], how 0": true,
   "10,0,1: context range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], argument range 0 [detached], how 1": true,
   "10,0,2: context range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], argument range 0 [detached], how 2": true,
   "10,0,3: context range 10 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], argument range 0 [detached], how 3": true,
   "11,0,0: context range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 0": true,
   "11,0,1: context range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 1": true,
   "11,0,2: context range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 2": true,
   "11,0,3: context range 11 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 3": true,
@@ -767,121 +1032,253 @@
   "18,0,0: context range 18 [document.head, 1, document.head, 1], argument range 0 [detached], how 0": true,
   "18,0,1: context range 18 [document.head, 1, document.head, 1], argument range 0 [detached], how 1": true,
   "18,0,2: context range 18 [document.head, 1, document.head, 1], argument range 0 [detached], how 2": true,
   "18,0,3: context range 18 [document.head, 1, document.head, 1], argument range 0 [detached], how 3": true,
   "19,0,0: context range 19 [document.body, 4, document.body, 5], argument range 0 [detached], how 0": true,
   "19,0,1: context range 19 [document.body, 4, document.body, 5], argument range 0 [detached], how 1": true,
   "19,0,2: context range 19 [document.body, 4, document.body, 5], argument range 0 [detached], how 2": true,
   "19,0,3: context range 19 [document.body, 4, document.body, 5], argument range 0 [detached], how 3": true,
-  "2,0,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 0": true,
-  "2,0,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 1": true,
-  "2,0,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 2": true,
-  "2,0,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 3": true,
   "20,0,0: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 0": true,
-  "20,0,100: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"quasit\"": true,
+  "20,0,1: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1": true,
+  "20,0,2: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2": true,
+  "20,0,3: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3": true,
+  "20,0,4: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -1": true,
+  "20,0,5: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4": true,
+  "20,0,6: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 5": true,
+  "20,0,7: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how NaN": true,
+  "20,0,8: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0": true,
+  "20,0,9: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how Infinity": true,
   "20,0,10: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -Infinity": true,
   "20,0,11: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65535": true,
   "20,0,12: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65536": true,
   "20,0,13: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65537": true,
   "20,0,14: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65538": true,
   "20,0,15: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65539": true,
   "20,0,16: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65540": true,
   "20,0,17: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65537": true,
   "20,0,18: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65536": true,
   "20,0,19: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65535": true,
-  "20,0,1: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1": true,
   "20,0,20: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65534": true,
   "20,0,21: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65533": true,
   "20,0,22: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65532": true,
   "20,0,23: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967295": true,
   "20,0,24: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967296": true,
   "20,0,25: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967297": true,
   "20,0,26: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967298": true,
   "20,0,27: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967299": true,
   "20,0,28: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967300": true,
   "20,0,29: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0.5": true,
-  "20,0,2: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2": true,
   "20,0,30: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 0.5": true,
   "20,0,31: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1.5": true,
   "20,0,32: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2.5": true,
   "20,0,33: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3.5": true,
   "20,0,34: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4.5": true,
   "20,0,35: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -1.5": true,
   "20,0,36: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0.5": true,
   "20,0,37: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 0.5": true,
   "20,0,38: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1.5": true,
   "20,0,39: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2.5": true,
-  "20,0,3: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3": true,
   "20,0,40: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3.5": true,
   "20,0,41: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -73.5": true,
   "20,0,42: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -72.5": true,
   "20,0,43: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -71.5": true,
   "20,0,44: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -70.5": true,
   "20,0,45: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -69.5": true,
   "20,0,46: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -68.5": true,
   "20,0,47: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"0\"": true,
   "20,0,48: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"1\"": true,
   "20,0,49: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"2\"": true,
-  "20,0,4: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -1": true,
   "20,0,50: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"3\"": true,
   "20,0,51: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-1\"": true,
   "20,0,52: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4\"": true,
   "20,0,53: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"5\"": true,
   "20,0,54: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"NaN\"": true,
   "20,0,55: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"0\"": true,
   "20,0,56: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"Infinity\"": true,
   "20,0,57: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-Infinity\"": true,
   "20,0,58: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"65535\"": true,
   "20,0,59: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"65536\"": true,
-  "20,0,5: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4": true,
   "20,0,60: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"65537\"": true,
   "20,0,61: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"65538\"": true,
   "20,0,62: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"65539\"": true,
   "20,0,63: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"65540\"": true,
   "20,0,64: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-65537\"": true,
   "20,0,65: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-65536\"": true,
   "20,0,66: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-65535\"": true,
   "20,0,67: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-65534\"": true,
   "20,0,68: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-65533\"": true,
   "20,0,69: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-65532\"": true,
-  "20,0,6: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 5": true,
   "20,0,70: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4294967295\"": true,
   "20,0,71: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4294967296\"": true,
   "20,0,72: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4294967297\"": true,
   "20,0,73: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4294967298\"": true,
   "20,0,74: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4294967299\"": true,
   "20,0,75: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4294967300\"": true,
   "20,0,76: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-0.5\"": true,
   "20,0,77: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"0.5\"": true,
   "20,0,78: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"1.5\"": true,
   "20,0,79: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"2.5\"": true,
-  "20,0,7: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how NaN": true,
   "20,0,80: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"3.5\"": true,
   "20,0,81: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"4.5\"": true,
   "20,0,82: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-1.5\"": true,
   "20,0,83: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-0.5\"": true,
   "20,0,84: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"0.5\"": true,
   "20,0,85: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"1.5\"": true,
   "20,0,86: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"2.5\"": true,
   "20,0,87: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"3.5\"": true,
   "20,0,88: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-73.5\"": true,
   "20,0,89: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-72.5\"": true,
-  "20,0,8: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0": true,
   "20,0,90: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-71.5\"": true,
   "20,0,91: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-70.5\"": true,
   "20,0,92: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-69.5\"": true,
   "20,0,93: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"-68.5\"": true,
   "20,0,94: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"6.5536e4\"": true,
   "20,0,95: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how null": true,
   "20,0,96: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how undefined": true,
   "20,0,97: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how true": true,
   "20,0,98: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how false": true,
   "20,0,99: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"\"": true,
-  "20,0,9: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how Infinity": true,
+  "20,0,100: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how \"quasit\"": true,
+  "20,3,4: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1": true,
+  "20,3,5: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4": true,
+  "20,3,6: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5": true,
+  "20,3,11: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535": true,
+  "20,3,16: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540": true,
+  "20,3,17: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537": true,
+  "20,3,22: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532": true,
+  "20,3,23: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295": true,
+  "20,3,28: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300": true,
+  "20,3,34: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5": true,
+  "20,3,35: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5": true,
+  "20,3,41: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5": true,
+  "20,3,42: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5": true,
+  "20,3,43: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5": true,
+  "20,3,44: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5": true,
+  "20,3,45: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5": true,
+  "20,3,46: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5": true,
+  "20,3,51: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1\"": true,
+  "20,3,52: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4\"": true,
+  "20,3,53: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"5\"": true,
+  "20,3,58: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65535\"": true,
+  "20,3,63: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65540\"": true,
+  "20,3,64: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65537\"": true,
+  "20,3,69: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65532\"": true,
+  "20,3,70: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967295\"": true,
+  "20,3,75: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967300\"": true,
+  "20,3,81: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4.5\"": true,
+  "20,3,82: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1.5\"": true,
+  "20,3,88: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-73.5\"": true,
+  "20,3,89: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-72.5\"": true,
+  "20,3,90: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-71.5\"": true,
+  "20,3,91: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-70.5\"": true,
+  "20,3,92: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-69.5\"": true,
+  "20,3,93: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-68.5\"": true,
+  "20,20,4: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1": true,
+  "20,20,5: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4": true,
+  "20,20,6: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5": true,
+  "20,20,11: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535": true,
+  "20,20,16: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540": true,
+  "20,20,17: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537": true,
+  "20,20,22: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532": true,
+  "20,20,23: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295": true,
+  "20,20,28: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300": true,
+  "20,20,34: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5": true,
+  "20,20,35: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5": true,
+  "20,20,41: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5": true,
+  "20,20,42: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5": true,
+  "20,20,43: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5": true,
+  "20,20,44: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5": true,
+  "20,20,45: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5": true,
+  "20,20,46: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5": true,
+  "20,20,51: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1\"": true,
+  "20,20,52: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4\"": true,
+  "20,20,53: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"5\"": true,
+  "20,20,58: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65535\"": true,
+  "20,20,63: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65540\"": true,
+  "20,20,64: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65537\"": true,
+  "20,20,69: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65532\"": true,
+  "20,20,70: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967295\"": true,
+  "20,20,75: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967300\"": true,
+  "20,20,81: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4.5\"": true,
+  "20,20,82: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1.5\"": true,
+  "20,20,88: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-73.5\"": true,
+  "20,20,89: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-72.5\"": true,
+  "20,20,90: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-71.5\"": true,
+  "20,20,91: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-70.5\"": true,
+  "20,20,92: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-69.5\"": true,
+  "20,20,93: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-68.5\"": true,
+  "20,29,4: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1": true,
+  "20,29,5: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4": true,
+  "20,29,6: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 5": true,
+  "20,29,11: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65535": true,
+  "20,29,16: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65540": true,
+  "20,29,17: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65537": true,
+  "20,29,22: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65532": true,
+  "20,29,23: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967295": true,
+  "20,29,28: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967300": true,
+  "20,29,34: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4.5": true,
+  "20,29,35: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1.5": true,
+  "20,29,41: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -73.5": true,
+  "20,29,42: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -72.5": true,
+  "20,29,43: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -71.5": true,
+  "20,29,44: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -70.5": true,
+  "20,29,45: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -69.5": true,
+  "20,29,46: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -68.5": true,
+  "20,29,51: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1\"": true,
+  "20,29,52: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4\"": true,
+  "20,29,53: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"5\"": true,
+  "20,29,58: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65535\"": true,
+  "20,29,63: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65540\"": true,
+  "20,29,64: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65537\"": true,
+  "20,29,69: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65532\"": true,
+  "20,29,70: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967295\"": true,
+  "20,29,75: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967300\"": true,
+  "20,29,81: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4.5\"": true,
+  "20,29,82: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1.5\"": true,
+  "20,29,88: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-73.5\"": true,
+  "20,29,89: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-72.5\"": true,
+  "20,29,90: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-71.5\"": true,
+  "20,29,91: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-70.5\"": true,
+  "20,29,92: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-69.5\"": true,
+  "20,29,93: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-68.5\"": true,
+  "20,39,4: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -1": true,
+  "20,39,5: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 4": true,
+  "20,39,6: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 5": true,
+  "20,39,11: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 65535": true,
+  "20,39,16: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 65540": true,
+  "20,39,17: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -65537": true,
+  "20,39,22: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -65532": true,
+  "20,39,23: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 4294967295": true,
+  "20,39,28: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 4294967300": true,
+  "20,39,34: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how 4.5": true,
+  "20,39,35: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -1.5": true,
+  "20,39,41: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -73.5": true,
+  "20,39,42: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -72.5": true,
+  "20,39,43: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -71.5": true,
+  "20,39,44: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -70.5": true,
+  "20,39,45: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -69.5": true,
+  "20,39,46: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how -68.5": true,
+  "20,39,51: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-1\"": true,
+  "20,39,52: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"4\"": true,
+  "20,39,53: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"5\"": true,
+  "20,39,58: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"65535\"": true,
+  "20,39,63: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"65540\"": true,
+  "20,39,64: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-65537\"": true,
+  "20,39,69: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-65532\"": true,
+  "20,39,70: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"4294967295\"": true,
+  "20,39,75: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"4294967300\"": true,
+  "20,39,81: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"4.5\"": true,
+  "20,39,82: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-1.5\"": true,
+  "20,39,88: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-73.5\"": true,
+  "20,39,89: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-72.5\"": true,
+  "20,39,90: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-71.5\"": true,
+  "20,39,91: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-70.5\"": true,
+  "20,39,92: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-69.5\"": true,
+  "20,39,93: context range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 39 [testDiv, 0, comment, 5], how \"-68.5\"": true,
   "21,0,0: context range 21 [foreignDoc.head, 1, foreignDoc.head, 1], argument range 0 [detached], how 0": true,
   "21,0,1: context range 21 [foreignDoc.head, 1, foreignDoc.head, 1], argument range 0 [detached], how 1": true,
   "21,0,2: context range 21 [foreignDoc.head, 1, foreignDoc.head, 1], argument range 0 [detached], how 2": true,
   "21,0,3: context range 21 [foreignDoc.head, 1, foreignDoc.head, 1], argument range 0 [detached], how 3": true,
   "22,0,0: context range 22 [foreignDoc.body, 0, foreignDoc.body, 0], argument range 0 [detached], how 0": true,
   "22,0,1: context range 22 [foreignDoc.body, 0, foreignDoc.body, 0], argument range 0 [detached], how 1": true,
   "22,0,2: context range 22 [foreignDoc.body, 0, foreignDoc.body, 0], argument range 0 [detached], how 2": true,
   "22,0,3: context range 22 [foreignDoc.body, 0, foreignDoc.body, 0], argument range 0 [detached], how 3": true,
@@ -905,217 +1302,252 @@
   "27,0,1: context range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 1": true,
   "27,0,2: context range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 2": true,
   "27,0,3: context range 27 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 3": true,
   "28,0,0: context range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 0": true,
   "28,0,1: context range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 1": true,
   "28,0,2: context range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 2": true,
   "28,0,3: context range 28 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 3": true,
   "29,0,0: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 0": true,
-  "29,0,100: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"quasit\"": true,
+  "29,0,1: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1": true,
+  "29,0,2: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2": true,
+  "29,0,3: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3": true,
+  "29,0,4: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -1": true,
+  "29,0,5: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4": true,
+  "29,0,6: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 5": true,
+  "29,0,7: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how NaN": true,
+  "29,0,8: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0": true,
+  "29,0,9: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how Infinity": true,
   "29,0,10: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -Infinity": true,
   "29,0,11: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65535": true,
   "29,0,12: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65536": true,
   "29,0,13: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65537": true,
   "29,0,14: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65538": true,
   "29,0,15: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65539": true,
   "29,0,16: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65540": true,
   "29,0,17: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65537": true,
   "29,0,18: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65536": true,
   "29,0,19: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65535": true,
-  "29,0,1: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1": true,
   "29,0,20: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65534": true,
   "29,0,21: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65533": true,
   "29,0,22: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65532": true,
   "29,0,23: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967295": true,
   "29,0,24: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967296": true,
   "29,0,25: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967297": true,
   "29,0,26: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967298": true,
   "29,0,27: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967299": true,
   "29,0,28: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967300": true,
   "29,0,29: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0.5": true,
-  "29,0,2: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2": true,
   "29,0,30: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 0.5": true,
   "29,0,31: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1.5": true,
   "29,0,32: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2.5": true,
   "29,0,33: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3.5": true,
   "29,0,34: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4.5": true,
   "29,0,35: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -1.5": true,
   "29,0,36: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0.5": true,
   "29,0,37: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 0.5": true,
   "29,0,38: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1.5": true,
   "29,0,39: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2.5": true,
-  "29,0,3: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3": true,
   "29,0,40: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3.5": true,
   "29,0,41: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -73.5": true,
   "29,0,42: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -72.5": true,
   "29,0,43: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -71.5": true,
   "29,0,44: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -70.5": true,
   "29,0,45: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -69.5": true,
   "29,0,46: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -68.5": true,
   "29,0,47: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"0\"": true,
   "29,0,48: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"1\"": true,
   "29,0,49: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"2\"": true,
-  "29,0,4: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -1": true,
   "29,0,50: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"3\"": true,
   "29,0,51: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-1\"": true,
   "29,0,52: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4\"": true,
   "29,0,53: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"5\"": true,
   "29,0,54: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"NaN\"": true,
   "29,0,55: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"0\"": true,
   "29,0,56: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"Infinity\"": true,
   "29,0,57: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-Infinity\"": true,
   "29,0,58: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"65535\"": true,
   "29,0,59: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"65536\"": true,
-  "29,0,5: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4": true,
   "29,0,60: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"65537\"": true,
   "29,0,61: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"65538\"": true,
   "29,0,62: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"65539\"": true,
   "29,0,63: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"65540\"": true,
   "29,0,64: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-65537\"": true,
   "29,0,65: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-65536\"": true,
   "29,0,66: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-65535\"": true,
   "29,0,67: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-65534\"": true,
   "29,0,68: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-65533\"": true,
   "29,0,69: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-65532\"": true,
-  "29,0,6: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 5": true,
   "29,0,70: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4294967295\"": true,
   "29,0,71: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4294967296\"": true,
   "29,0,72: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4294967297\"": true,
   "29,0,73: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4294967298\"": true,
   "29,0,74: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4294967299\"": true,
   "29,0,75: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4294967300\"": true,
   "29,0,76: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-0.5\"": true,
   "29,0,77: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"0.5\"": true,
   "29,0,78: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"1.5\"": true,
   "29,0,79: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"2.5\"": true,
-  "29,0,7: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how NaN": true,
   "29,0,80: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"3.5\"": true,
   "29,0,81: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"4.5\"": true,
   "29,0,82: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-1.5\"": true,
   "29,0,83: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-0.5\"": true,
   "29,0,84: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"0.5\"": true,
   "29,0,85: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"1.5\"": true,
   "29,0,86: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"2.5\"": true,
   "29,0,87: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"3.5\"": true,
   "29,0,88: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-73.5\"": true,
   "29,0,89: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-72.5\"": true,
-  "29,0,8: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0": true,
   "29,0,90: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-71.5\"": true,
   "29,0,91: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-70.5\"": true,
   "29,0,92: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-69.5\"": true,
   "29,0,93: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"-68.5\"": true,
   "29,0,94: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"6.5536e4\"": true,
   "29,0,95: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how null": true,
   "29,0,96: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how undefined": true,
   "29,0,97: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how true": true,
   "29,0,98: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how false": true,
   "29,0,99: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"\"": true,
-  "29,0,9: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how Infinity": true,
-  "3,0,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0": true,
-  "3,0,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"quasit\"": true,
-  "3,0,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -Infinity": true,
-  "3,0,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65535": true,
-  "3,0,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65536": true,
-  "3,0,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65537": true,
-  "3,0,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65538": true,
-  "3,0,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65539": true,
-  "3,0,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65540": true,
-  "3,0,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65537": true,
-  "3,0,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65536": true,
-  "3,0,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65535": true,
-  "3,0,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1": true,
-  "3,0,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65534": true,
-  "3,0,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65533": true,
-  "3,0,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65532": true,
-  "3,0,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967295": true,
-  "3,0,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967296": true,
-  "3,0,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967297": true,
-  "3,0,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967298": true,
-  "3,0,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967299": true,
-  "3,0,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967300": true,
-  "3,0,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0.5": true,
-  "3,0,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2": true,
-  "3,0,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0.5": true,
-  "3,0,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1.5": true,
-  "3,0,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2.5": true,
-  "3,0,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3.5": true,
-  "3,0,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4.5": true,
-  "3,0,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -1.5": true,
-  "3,0,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0.5": true,
-  "3,0,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0.5": true,
-  "3,0,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1.5": true,
-  "3,0,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2.5": true,
-  "3,0,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3": true,
-  "3,0,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3.5": true,
-  "3,0,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -73.5": true,
-  "3,0,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -72.5": true,
-  "3,0,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -71.5": true,
-  "3,0,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -70.5": true,
-  "3,0,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -69.5": true,
-  "3,0,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -68.5": true,
-  "3,0,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0\"": true,
-  "3,0,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"1\"": true,
-  "3,0,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"2\"": true,
-  "3,0,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -1": true,
-  "3,0,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"3\"": true,
-  "3,0,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-1\"": true,
-  "3,0,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4\"": true,
-  "3,0,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"5\"": true,
-  "3,0,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"NaN\"": true,
-  "3,0,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0\"": true,
-  "3,0,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"Infinity\"": true,
-  "3,0,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-Infinity\"": true,
-  "3,0,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65535\"": true,
-  "3,0,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65536\"": true,
-  "3,0,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4": true,
-  "3,0,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65537\"": true,
-  "3,0,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65538\"": true,
-  "3,0,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65539\"": true,
-  "3,0,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"65540\"": true,
-  "3,0,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65537\"": true,
-  "3,0,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65536\"": true,
-  "3,0,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65535\"": true,
-  "3,0,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65534\"": true,
-  "3,0,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65533\"": true,
-  "3,0,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-65532\"": true,
-  "3,0,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 5": true,
-  "3,0,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967295\"": true,
-  "3,0,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967296\"": true,
-  "3,0,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967297\"": true,
-  "3,0,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967298\"": true,
-  "3,0,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967299\"": true,
-  "3,0,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4294967300\"": true,
-  "3,0,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-0.5\"": true,
-  "3,0,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0.5\"": true,
-  "3,0,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"1.5\"": true,
-  "3,0,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"2.5\"": true,
-  "3,0,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how NaN": true,
-  "3,0,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"3.5\"": true,
-  "3,0,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"4.5\"": true,
-  "3,0,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-1.5\"": true,
-  "3,0,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-0.5\"": true,
-  "3,0,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"0.5\"": true,
-  "3,0,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"1.5\"": true,
-  "3,0,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"2.5\"": true,
-  "3,0,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"3.5\"": true,
-  "3,0,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-73.5\"": true,
-  "3,0,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-72.5\"": true,
-  "3,0,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0": true,
-  "3,0,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-71.5\"": true,
-  "3,0,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-70.5\"": true,
-  "3,0,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-69.5\"": true,
-  "3,0,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"-68.5\"": true,
-  "3,0,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"6.5536e4\"": true,
-  "3,0,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how null": true,
-  "3,0,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how undefined": true,
-  "3,0,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how true": true,
-  "3,0,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how false": true,
-  "3,0,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how \"\"": true,
-  "3,0,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how Infinity": true,
+  "29,0,100: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how \"quasit\"": true,
+  "29,3,4: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1": true,
+  "29,3,5: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4": true,
+  "29,3,6: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5": true,
+  "29,3,11: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535": true,
+  "29,3,16: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540": true,
+  "29,3,17: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537": true,
+  "29,3,22: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532": true,
+  "29,3,23: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295": true,
+  "29,3,28: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300": true,
+  "29,3,34: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5": true,
+  "29,3,35: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5": true,
+  "29,3,41: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5": true,
+  "29,3,42: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5": true,
+  "29,3,43: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5": true,
+  "29,3,44: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5": true,
+  "29,3,45: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5": true,
+  "29,3,46: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5": true,
+  "29,3,51: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1\"": true,
+  "29,3,52: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4\"": true,
+  "29,3,53: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"5\"": true,
+  "29,3,58: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65535\"": true,
+  "29,3,63: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65540\"": true,
+  "29,3,64: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65537\"": true,
+  "29,3,69: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65532\"": true,
+  "29,3,70: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967295\"": true,
+  "29,3,75: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967300\"": true,
+  "29,3,81: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4.5\"": true,
+  "29,3,82: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1.5\"": true,
+  "29,3,88: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-73.5\"": true,
+  "29,3,89: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-72.5\"": true,
+  "29,3,90: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-71.5\"": true,
+  "29,3,91: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-70.5\"": true,
+  "29,3,92: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-69.5\"": true,
+  "29,3,93: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-68.5\"": true,
+  "29,20,4: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1": true,
+  "29,20,5: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4": true,
+  "29,20,6: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5": true,
+  "29,20,11: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535": true,
+  "29,20,16: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540": true,
+  "29,20,17: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537": true,
+  "29,20,22: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532": true,
+  "29,20,23: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295": true,
+  "29,20,28: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300": true,
+  "29,20,34: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5": true,
+  "29,20,35: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5": true,
+  "29,20,41: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5": true,
+  "29,20,42: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5": true,
+  "29,20,43: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5": true,
+  "29,20,44: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5": true,
+  "29,20,45: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5": true,
+  "29,20,46: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5": true,
+  "29,20,51: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1\"": true,
+  "29,20,52: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4\"": true,
+  "29,20,53: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"5\"": true,
+  "29,20,58: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65535\"": true,
+  "29,20,63: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65540\"": true,
+  "29,20,64: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65537\"": true,
+  "29,20,69: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65532\"": true,
+  "29,20,70: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967295\"": true,
+  "29,20,75: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967300\"": true,
+  "29,20,81: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4.5\"": true,
+  "29,20,82: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1.5\"": true,
+  "29,20,88: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-73.5\"": true,
+  "29,20,89: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-72.5\"": true,
+  "29,20,90: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-71.5\"": true,
+  "29,20,91: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-70.5\"": true,
+  "29,20,92: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-69.5\"": true,
+  "29,20,93: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-68.5\"": true,
+  "29,29,4: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1": true,
+  "29,29,5: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4": true,
+  "29,29,6: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 5": true,
+  "29,29,11: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65535": true,
+  "29,29,16: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65540": true,
+  "29,29,17: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65537": true,
+  "29,29,22: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65532": true,
+  "29,29,23: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967295": true,
+  "29,29,28: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967300": true,
+  "29,29,34: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4.5": true,
+  "29,29,35: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1.5": true,
+  "29,29,41: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -73.5": true,
+  "29,29,42: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -72.5": true,
+  "29,29,43: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -71.5": true,
+  "29,29,44: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -70.5": true,
+  "29,29,45: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -69.5": true,
+  "29,29,46: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -68.5": true,
+  "29,29,51: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1\"": true,
+  "29,29,52: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4\"": true,
+  "29,29,53: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"5\"": true,
+  "29,29,58: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65535\"": true,
+  "29,29,63: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65540\"": true,
+  "29,29,64: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65537\"": true,
+  "29,29,69: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65532\"": true,
+  "29,29,70: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967295\"": true,
+  "29,29,75: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967300\"": true,
+  "29,29,81: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4.5\"": true,
+  "29,29,82: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1.5\"": true,
+  "29,29,88: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-73.5\"": true,
+  "29,29,89: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-72.5\"": true,
+  "29,29,90: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-71.5\"": true,
+  "29,29,91: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-70.5\"": true,
+  "29,29,92: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-69.5\"": true,
+  "29,29,93: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-68.5\"": true,
+  "29,39,4: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -1": true,
+  "29,39,5: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 4": true,
+  "29,39,6: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 5": true,
+  "29,39,11: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 65535": true,
+  "29,39,16: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 65540": true,
+  "29,39,17: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -65537": true,
+  "29,39,22: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -65532": true,
+  "29,39,23: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 4294967295": true,
+  "29,39,28: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 4294967300": true,
+  "29,39,34: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how 4.5": true,
+  "29,39,35: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -1.5": true,
+  "29,39,41: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -73.5": true,
+  "29,39,42: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -72.5": true,
+  "29,39,43: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -71.5": true,
+  "29,39,44: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -70.5": true,
+  "29,39,45: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -69.5": true,
+  "29,39,46: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how -68.5": true,
+  "29,39,51: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-1\"": true,
+  "29,39,52: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"4\"": true,
+  "29,39,53: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"5\"": true,
+  "29,39,58: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"65535\"": true,
+  "29,39,63: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"65540\"": true,
+  "29,39,64: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-65537\"": true,
+  "29,39,69: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-65532\"": true,
+  "29,39,70: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"4294967295\"": true,
+  "29,39,75: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"4294967300\"": true,
+  "29,39,81: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"4.5\"": true,
+  "29,39,82: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-1.5\"": true,
+  "29,39,88: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-73.5\"": true,
+  "29,39,89: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-72.5\"": true,
+  "29,39,90: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-71.5\"": true,
+  "29,39,91: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-70.5\"": true,
+  "29,39,92: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-69.5\"": true,
+  "29,39,93: context range 29 [paras[0].firstChild, 3, paras[3], 1], argument range 39 [testDiv, 0, comment, 5], how \"-68.5\"": true,
   "30,0,0: context range 30 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 0": true,
   "30,0,1: context range 30 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 1": true,
   "30,0,2: context range 30 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 2": true,
   "30,0,3: context range 30 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 3": true,
   "31,0,0: context range 31 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 0": true,
   "31,0,1: context range 31 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 1": true,
   "31,0,2: context range 31 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 2": true,
   "31,0,3: context range 31 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 3": true,
@@ -1143,120 +1575,252 @@
   "37,0,1: context range 37 [document, 1, document, 2], argument range 0 [detached], how 1": true,
   "37,0,2: context range 37 [document, 1, document, 2], argument range 0 [detached], how 2": true,
   "37,0,3: context range 37 [document, 1, document, 2], argument range 0 [detached], how 3": true,
   "38,0,0: context range 38 [comment, 2, comment, 3], argument range 0 [detached], how 0": true,
   "38,0,1: context range 38 [comment, 2, comment, 3], argument range 0 [detached], how 1": true,
   "38,0,2: context range 38 [comment, 2, comment, 3], argument range 0 [detached], how 2": true,
   "38,0,3: context range 38 [comment, 2, comment, 3], argument range 0 [detached], how 3": true,
   "39,0,0: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 0": true,
-  "39,0,100: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"quasit\"": true,
+  "39,0,1: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 1": true,
+  "39,0,2: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 2": true,
+  "39,0,3: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 3": true,
+  "39,0,4: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -1": true,
+  "39,0,5: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4": true,
+  "39,0,6: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 5": true,
+  "39,0,7: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how NaN": true,
+  "39,0,8: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -0": true,
+  "39,0,9: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how Infinity": true,
   "39,0,10: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -Infinity": true,
   "39,0,11: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 65535": true,
   "39,0,12: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 65536": true,
   "39,0,13: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 65537": true,
   "39,0,14: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 65538": true,
   "39,0,15: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 65539": true,
   "39,0,16: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 65540": true,
   "39,0,17: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -65537": true,
   "39,0,18: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -65536": true,
   "39,0,19: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -65535": true,
-  "39,0,1: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 1": true,
   "39,0,20: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -65534": true,
   "39,0,21: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -65533": true,
   "39,0,22: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -65532": true,
   "39,0,23: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967295": true,
   "39,0,24: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967296": true,
   "39,0,25: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967297": true,
   "39,0,26: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967298": true,
   "39,0,27: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967299": true,
   "39,0,28: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967300": true,
   "39,0,29: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -0.5": true,
-  "39,0,2: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 2": true,
   "39,0,30: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 0.5": true,
   "39,0,31: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 1.5": true,
   "39,0,32: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 2.5": true,
   "39,0,33: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 3.5": true,
   "39,0,34: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4.5": true,
   "39,0,35: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -1.5": true,
   "39,0,36: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -0.5": true,
   "39,0,37: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 0.5": true,
   "39,0,38: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 1.5": true,
   "39,0,39: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 2.5": true,
-  "39,0,3: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 3": true,
   "39,0,40: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 3.5": true,
   "39,0,41: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -73.5": true,
   "39,0,42: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -72.5": true,
   "39,0,43: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -71.5": true,
   "39,0,44: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -70.5": true,
   "39,0,45: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -69.5": true,
   "39,0,46: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -68.5": true,
   "39,0,47: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"0\"": true,
   "39,0,48: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"1\"": true,
   "39,0,49: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"2\"": true,
-  "39,0,4: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -1": true,
   "39,0,50: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"3\"": true,
   "39,0,51: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-1\"": true,
   "39,0,52: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4\"": true,
   "39,0,53: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"5\"": true,
   "39,0,54: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"NaN\"": true,
   "39,0,55: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"0\"": true,
   "39,0,56: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"Infinity\"": true,
   "39,0,57: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-Infinity\"": true,
   "39,0,58: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"65535\"": true,
   "39,0,59: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"65536\"": true,
-  "39,0,5: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 4": true,
   "39,0,60: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"65537\"": true,
   "39,0,61: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"65538\"": true,
   "39,0,62: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"65539\"": true,
   "39,0,63: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"65540\"": true,
   "39,0,64: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-65537\"": true,
   "39,0,65: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-65536\"": true,
   "39,0,66: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-65535\"": true,
   "39,0,67: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-65534\"": true,
   "39,0,68: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-65533\"": true,
   "39,0,69: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-65532\"": true,
-  "39,0,6: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how 5": true,
   "39,0,70: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4294967295\"": true,
   "39,0,71: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4294967296\"": true,
   "39,0,72: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4294967297\"": true,
   "39,0,73: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4294967298\"": true,
   "39,0,74: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4294967299\"": true,
   "39,0,75: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4294967300\"": true,
   "39,0,76: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-0.5\"": true,
   "39,0,77: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"0.5\"": true,
   "39,0,78: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"1.5\"": true,
   "39,0,79: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"2.5\"": true,
-  "39,0,7: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how NaN": true,
   "39,0,80: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"3.5\"": true,
   "39,0,81: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"4.5\"": true,
   "39,0,82: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-1.5\"": true,
   "39,0,83: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-0.5\"": true,
   "39,0,84: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"0.5\"": true,
   "39,0,85: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"1.5\"": true,
   "39,0,86: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"2.5\"": true,
   "39,0,87: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"3.5\"": true,
   "39,0,88: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-73.5\"": true,
   "39,0,89: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-72.5\"": true,
-  "39,0,8: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how -0": true,
   "39,0,90: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-71.5\"": true,
   "39,0,91: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-70.5\"": true,
   "39,0,92: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-69.5\"": true,
   "39,0,93: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"-68.5\"": true,
   "39,0,94: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"6.5536e4\"": true,
   "39,0,95: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how null": true,
   "39,0,96: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how undefined": true,
   "39,0,97: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how true": true,
   "39,0,98: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how false": true,
   "39,0,99: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"\"": true,
-  "39,0,9: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how Infinity": true,
-  "4,0,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 0": true,
-  "4,0,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 1": true,
-  "4,0,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 2": true,
-  "4,0,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 3": true,
+  "39,0,100: context range 39 [testDiv, 0, comment, 5], argument range 0 [detached], how \"quasit\"": true,
+  "39,3,4: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1": true,
+  "39,3,5: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4": true,
+  "39,3,6: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5": true,
+  "39,3,11: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535": true,
+  "39,3,16: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540": true,
+  "39,3,17: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537": true,
+  "39,3,22: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532": true,
+  "39,3,23: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295": true,
+  "39,3,28: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300": true,
+  "39,3,34: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5": true,
+  "39,3,35: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5": true,
+  "39,3,41: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5": true,
+  "39,3,42: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5": true,
+  "39,3,43: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5": true,
+  "39,3,44: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5": true,
+  "39,3,45: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5": true,
+  "39,3,46: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5": true,
+  "39,3,51: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1\"": true,
+  "39,3,52: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4\"": true,
+  "39,3,53: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"5\"": true,
+  "39,3,58: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65535\"": true,
+  "39,3,63: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"65540\"": true,
+  "39,3,64: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65537\"": true,
+  "39,3,69: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-65532\"": true,
+  "39,3,70: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967295\"": true,
+  "39,3,75: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4294967300\"": true,
+  "39,3,81: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"4.5\"": true,
+  "39,3,82: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-1.5\"": true,
+  "39,3,88: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-73.5\"": true,
+  "39,3,89: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-72.5\"": true,
+  "39,3,90: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-71.5\"": true,
+  "39,3,91: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-70.5\"": true,
+  "39,3,92: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-69.5\"": true,
+  "39,3,93: context range 39 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how \"-68.5\"": true,
+  "39,20,4: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1": true,
+  "39,20,5: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4": true,
+  "39,20,6: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5": true,
+  "39,20,11: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535": true,
+  "39,20,16: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540": true,
+  "39,20,17: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537": true,
+  "39,20,22: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532": true,
+  "39,20,23: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295": true,
+  "39,20,28: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300": true,
+  "39,20,34: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5": true,
+  "39,20,35: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5": true,
+  "39,20,41: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5": true,
+  "39,20,42: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5": true,
+  "39,20,43: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5": true,
+  "39,20,44: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5": true,
+  "39,20,45: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5": true,
+  "39,20,46: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5": true,
+  "39,20,51: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1\"": true,
+  "39,20,52: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4\"": true,
+  "39,20,53: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"5\"": true,
+  "39,20,58: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65535\"": true,
+  "39,20,63: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"65540\"": true,
+  "39,20,64: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65537\"": true,
+  "39,20,69: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-65532\"": true,
+  "39,20,70: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967295\"": true,
+  "39,20,75: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4294967300\"": true,
+  "39,20,81: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"4.5\"": true,
+  "39,20,82: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-1.5\"": true,
+  "39,20,88: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-73.5\"": true,
+  "39,20,89: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-72.5\"": true,
+  "39,20,90: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-71.5\"": true,
+  "39,20,91: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-70.5\"": true,
+  "39,20,92: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-69.5\"": true,
+  "39,20,93: context range 39 [testDiv, 0, comment, 5], argument range 20 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how \"-68.5\"": true,
+  "39,29,4: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1": true,
+  "39,29,5: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4": true,
+  "39,29,6: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 5": true,
+  "39,29,11: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65535": true,
+  "39,29,16: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 65540": true,
+  "39,29,17: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65537": true,
+  "39,29,22: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -65532": true,
+  "39,29,23: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967295": true,
+  "39,29,28: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4294967300": true,
+  "39,29,34: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how 4.5": true,
+  "39,29,35: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -1.5": true,
+  "39,29,41: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -73.5": true,
+  "39,29,42: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -72.5": true,
+  "39,29,43: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -71.5": true,
+  "39,29,44: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -70.5": true,
+  "39,29,45: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -69.5": true,
+  "39,29,46: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how -68.5": true,
+  "39,29,51: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1\"": true,
+  "39,29,52: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4\"": true,
+  "39,29,53: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"5\"": true,
+  "39,29,58: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65535\"": true,
+  "39,29,63: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"65540\"": true,
+  "39,29,64: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65537\"": true,
+  "39,29,69: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-65532\"": true,
+  "39,29,70: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967295\"": true,
+  "39,29,75: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4294967300\"": true,
+  "39,29,81: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"4.5\"": true,
+  "39,29,82: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-1.5\"": true,
+  "39,29,88: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-73.5\"": true,
+  "39,29,89: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-72.5\"": true,
+  "39,29,90: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-71.5\"": true,
+  "39,29,91: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-70.5\"": true,
+  "39,29,92: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-69.5\"": true,
+  "39,29,93: context range 39 [testDiv, 0, comment, 5], argument range 29 [paras[0].firstChild, 3, paras[3], 1], how \"-68.5\"": true,
+  "39,39,4: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -1": true,
+  "39,39,5: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 4": true,
+  "39,39,6: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 5": true,
+  "39,39,11: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 65535": true,
+  "39,39,16: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 65540": true,
+  "39,39,17: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -65537": true,
+  "39,39,22: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -65532": true,
+  "39,39,23: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 4294967295": true,
+  "39,39,28: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 4294967300": true,
+  "39,39,34: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how 4.5": true,
+  "39,39,35: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -1.5": true,
+  "39,39,41: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -73.5": true,
+  "39,39,42: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -72.5": true,
+  "39,39,43: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -71.5": true,
+  "39,39,44: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -70.5": true,
+  "39,39,45: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -69.5": true,
+  "39,39,46: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how -68.5": true,
+  "39,39,51: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-1\"": true,
+  "39,39,52: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"4\"": true,
+  "39,39,53: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"5\"": true,
+  "39,39,58: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"65535\"": true,
+  "39,39,63: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"65540\"": true,
+  "39,39,64: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-65537\"": true,
+  "39,39,69: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-65532\"": true,
+  "39,39,70: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"4294967295\"": true,
+  "39,39,75: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"4294967300\"": true,
+  "39,39,81: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"4.5\"": true,
+  "39,39,82: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-1.5\"": true,
+  "39,39,88: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-73.5\"": true,
+  "39,39,89: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-72.5\"": true,
+  "39,39,90: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-71.5\"": true,
+  "39,39,91: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-70.5\"": true,
+  "39,39,92: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-69.5\"": true,
+  "39,39,93: context range 39 [testDiv, 0, comment, 5], argument range 39 [testDiv, 0, comment, 5], how \"-68.5\"": true,
   "40,0,0: context range 40 [paras[2].firstChild, 4, comment, 2], argument range 0 [detached], how 0": true,
   "40,0,1: context range 40 [paras[2].firstChild, 4, comment, 2], argument range 0 [detached], how 1": true,
   "40,0,2: context range 40 [paras[2].firstChild, 4, comment, 2], argument range 0 [detached], how 2": true,
   "40,0,3: context range 40 [paras[2].firstChild, 4, comment, 2], argument range 0 [detached], how 3": true,
   "41,0,0: context range 41 [paras[3], 1, comment, 8], argument range 0 [detached], how 0": true,
   "41,0,1: context range 41 [paras[3], 1, comment, 8], argument range 0 [detached], how 1": true,
   "41,0,2: context range 41 [paras[3], 1, comment, 8], argument range 0 [detached], how 2": true,
   "41,0,3: context range 41 [paras[3], 1, comment, 8], argument range 0 [detached], how 3": true,
@@ -1287,20 +1851,16 @@
   "48,0,0: context range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], argument range 0 [detached], how 0": true,
   "48,0,1: context range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], argument range 0 [detached], how 1": true,
   "48,0,2: context range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], argument range 0 [detached], how 2": true,
   "48,0,3: context range 48 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], argument range 0 [detached], how 3": true,
   "49,0,0: context range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 0": true,
   "49,0,1: context range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 1": true,
   "49,0,2: context range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 2": true,
   "49,0,3: context range 49 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 3": true,
-  "5,0,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 0": true,
-  "5,0,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 1": true,
-  "5,0,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 2": true,
-  "5,0,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 3": true,
   "50,0,0: context range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], argument range 0 [detached], how 0": true,
   "50,0,1: context range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], argument range 0 [detached], how 1": true,
   "50,0,2: context range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], argument range 0 [detached], how 2": true,
   "50,0,3: context range 50 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], argument range 0 [detached], how 3": true,
   "51,0,0: context range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 0": true,
   "51,0,1: context range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 1": true,
   "51,0,2: context range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 2": true,
   "51,0,3: context range 51 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 3": true,
@@ -1330,26 +1890,10 @@
   "57,0,3: context range 57 [docfrag, 0, docfrag, 0], argument range 0 [detached], how 3": true,
   "58,0,0: context range 58 [foreignDocfrag, 0, foreignDocfrag, 0], argument range 0 [detached], how 0": true,
   "58,0,1: context range 58 [foreignDocfrag, 0, foreignDocfrag, 0], argument range 0 [detached], how 1": true,
   "58,0,2: context range 58 [foreignDocfrag, 0, foreignDocfrag, 0], argument range 0 [detached], how 2": true,
   "58,0,3: context range 58 [foreignDocfrag, 0, foreignDocfrag, 0], argument range 0 [detached], how 3": true,
   "59,0,0: context range 59 [xmlDocfrag, 0, xmlDocfrag, 0], argument range 0 [detached], how 0": true,
   "59,0,1: context range 59 [xmlDocfrag, 0, xmlDocfrag, 0], argument range 0 [detached], how 1": true,
   "59,0,2: context range 59 [xmlDocfrag, 0, xmlDocfrag, 0], argument range 0 [detached], how 2": true,
-  "59,0,3: context range 59 [xmlDocfrag, 0, xmlDocfrag, 0], argument range 0 [detached], how 3": true,
-  "6,0,0: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 0": true,
-  "6,0,1: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 1": true,
-  "6,0,2: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 2": true,
-  "6,0,3: context range 6 [paras[1].firstChild, 0, paras[1].firstChild, 1], argument range 0 [detached], how 3": true,
-  "7,0,0: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 0": true,
-  "7,0,1: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 1": true,
-  "7,0,2: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 2": true,
-  "7,0,3: context range 7 [paras[1].firstChild, 2, paras[1].firstChild, 8], argument range 0 [detached], how 3": true,
-  "8,0,0: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 0": true,
-  "8,0,1: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 1": true,
-  "8,0,2: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 2": true,
-  "8,0,3: context range 8 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 3": true,
-  "9,0,0: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 0": true,
-  "9,0,1: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 1": true,
-  "9,0,2: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 2": true,
-  "9,0,3: context range 9 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 3": true
+  "59,0,3: context range 59 [xmlDocfrag, 0, xmlDocfrag, 0], argument range 0 [detached], how 3": true
 }
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in
+++ /dev/null
@@ -1,43 +0,0 @@
-# THIS FILE IS AUTOGENERATED BY parseFailures.py - DO NOT EDIT
-
-DEPTH = ../../../../../../../..
-
-topsrcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-relativesrcdir = dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger
-
-DIRS = \
-  $(NULL)
-
-include $(DEPTH)/config/autoconf.mk
-include $(topsrcdir)/config/rules.mk
-
-_FILES = \
-  test_DOMImplementation-createDocument.html.json \
-  test_Document-createElementNS.html.json \
-  test_Document-getElementsByTagName.html.json \
-  test_Element-children.html.json \
-  test_Event-constructors.html.json \
-  test_Event-defaultPrevented.html.json \
-  test_EventTarget-dispatchEvent.html.json \
-  test_Node-appendChild.html.json \
-  test_Node-constants.html.json \
-  test_Node-insertBefore.html.json \
-  test_Node-isEqualNode.xhtml.json \
-  test_Node-removeChild.html.json \
-  test_Node-replaceChild.html.json \
-  test_NodeFilter-constants.html.json \
-  test_Range-attributes.html.json \
-  test_Range-commonAncestorContainer.html.json \
-  test_Range-comparePoint.html.json \
-  test_Range-detach.html.json \
-  test_Range-intersectsNode.html.json \
-  test_attributes.html.json \
-  test_case.html.json \
-  test_historical.html.json \
-  test_interfaces.html.json \
-  $(NULL)
-
-libs:: $(_FILES)
-	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_DOMImplementation-createDocument.html.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 16": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 31": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 46": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 61": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 76": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 92": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 93": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 95": true,
-  "DOMImplementation.createDocument(namespaceURI, qualifiedName, doctype) 97": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-createElementNS.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Invalid Name: \u0300foo": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Document-getElementsByTagName.html.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "Document.getElementsByTagName 2": true,
-  "Document.getElementsByTagName 3": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Element-children.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "HTMLCollection edge cases 1": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-constructors.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Event constructors": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Event-defaultPrevented.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "initEvent should unset defaultPrevented.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_EventTarget-dispatchEvent.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "If the event's dispatch flag is set, an InvalidStateError must be thrown.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-appendChild.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Node.appendChild": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-constants.html.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "Constants for createDocumentPosition on [object DOM Constructor.prototype].": true,
-  "Constants for nodeType on [object DOM Constructor.prototype].": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-insertBefore.html.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "Calling insertBefore with a non-Node first argument must throw TypeError.": true,
-  "Calling insertBefore with a non-Node first argument on a leaf node Comment node <!--Foo--> must throw TypeError.": true,
-  "Calling insertBefore with a non-Node first argument on a leaf node DocumentType node must throw TypeError.": true,
-  "Calling insertBefore with a non-Node first argument on a leaf node ProcessingInstruction node with target \"foo\" and data \"bar\" must throw TypeError.": true,
-  "Calling insertBefore with a non-Node first argument on a leaf node Text node \"Foo\" must throw TypeError.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-isEqualNode.xhtml.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "isEqualNode should return true when only the internal subsets of DocumentTypes differ.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-removeChild.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Passing a value that is not a Node reference to removeChild should throw TypeError.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Node-replaceChild.html.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "If the context node is not a node that can contain children, a NotFoundError exception should be thrown": true,
-  "Passing null to replaceChild should throw a TypeError.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_NodeFilter-constants.html.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "Constants for acceptNode on undefined.": true,
-  "Constants for whatToShow on undefined.": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-attributes.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Range attributes": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-commonAncestorContainer.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Detached Range": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-comparePoint.html.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "Range.comparePoint": true,
-  "Range.comparePoint 1": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-detach.html.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "Range.detach": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_Range-intersectsNode.html.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "Range.intersectsNode": true,
-  "Range.intersectsNode 1": true,
-  "Range.intersectsNode 2": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_attributes.html.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "AttrExodus": true,
-  "First set attribute is returned by setAttribute": true,
-  "First set attribute is returned with mapped attribute set first": true,
-  "setAttribute should throw a NAMESPACE_ERR when qualifiedName starts with 'xmlns'": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_case.html.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "getElementsByTagName ABC": true,
-  "getElementsByTagName Abc": true,
-  "getElementsByTagName abc": true,
-  "getElementsByTagName \u00c4": true,
-  "getElementsByTagName \u00e4": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_historical.html.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "DocumentType member must be nuked: internalSubset": true,
-  "Historical DOM features must be removed: CDATASection": true,
-  "Historical DOM features must be removed: NamedNodeMap": true,
-  "Historical DOM features must be removed: UserDataHandler": true,
-  "Historical DOM features must be removed: createAttribute": true,
-  "Historical DOM features must be removed: createAttributeNS": true,
-  "Historical DOM features must be removed: createCDATASection": true,
-  "Historical DOM features must be removed: getAttributeNode": true,
-  "Historical DOM features must be removed: getAttributeNodeNS": true,
-  "Historical DOM features must be removed: inputEncoding": true,
-  "Historical DOM features must be removed: removeAttributeNode": true,
-  "Historical DOM features must be removed: setAttributeNode": true,
-  "Node member must be nuked: getUserData": true,
-  "Node member must be nuked: hasAttributes": true,
-  "Node member must be nuked: isSupported": true,
-  "Node member must be nuked: setUserData": true
-}
deleted file mode 100644
--- a/dom/imptests/failures/webapps/DOMCore/tests/submissions/Ms2ger/test_interfaces.html.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "Should be able to delete CharacterData.": true,
-  "Should be able to delete Document.": true,
-  "Should be able to delete Node.": true,
-  "Should be able to delete NodeFilter.": true
-}
--- a/dom/imptests/failures/webapps/XMLHttpRequest/tests/submissions/Ms2ger/Makefile.in
+++ b/dom/imptests/failures/webapps/XMLHttpRequest/tests/submissions/Ms2ger/Makefile.in
@@ -7,11 +7,12 @@ relativesrcdir = dom/imptests/failures/w
 
 DIRS = \
   $(NULL)
 
 include $(DEPTH)/config/autoconf.mk
 
 MOCHITEST_FILES = \
   test_interfaces.html.json \
+  test_setrequestheader-invalid-arguments.htm.json \
   $(NULL)
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/dom/imptests/failures/webapps/XMLHttpRequest/tests/submissions/Ms2ger/test_setrequestheader-invalid-arguments.htm.json
@@ -0,0 +1,54 @@
+{
+  "XMLHttpRequest: setRequestHeader() with invalid arguments": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 1": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 2": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 3": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 4": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 5": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 6": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 7": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 8": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 9": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 10": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 11": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 12": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 13": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 14": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 15": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 16": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 17": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 18": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 19": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 20": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 21": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 22": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 23": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 24": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 25": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 26": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 27": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 28": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 29": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 30": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 31": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 32": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 33": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 34": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 35": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 36": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 37": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 38": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 39": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 40": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 41": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 42": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 43": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 44": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 45": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 46": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 47": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 48": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 49": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 50": true,
+  "XMLHttpRequest: setRequestHeader() with invalid arguments 51": true
+}
--- a/dom/imptests/idlharness.js
+++ b/dom/imptests/idlharness.js
@@ -774,21 +774,21 @@ IdlException.prototype.test_members = fu
                 //"Let O be the result of calling ToObject on the this value.
                 //"If O is not a platform object representing an exception for
                 //the exception on which the exception field was declared, then
                 //throw a TypeError."
                 //TODO: Test on a platform object representing an exception.
                 assert_throws(new TypeError(), function()
                 {
                     window[this.name].prototype[member.name];
-                }.bind(this), "getting property on prototype object must throw TypeError");
+                }, "getting property on prototype object must throw TypeError");
                 assert_throws(new TypeError(), function()
                 {
                     desc.get.call({});
-                }.bind(this), "calling getter on wrong object type must throw TypeError");
+                }, "calling getter on wrong object type must throw TypeError");
             }.bind(this), this.name + " exception: field " + member.name + " on exception interface prototype object");
         }
     }
 }
 
 //@}
 IdlException.prototype.test_object = function(desc)
 //@{
@@ -941,21 +941,21 @@ IdlInterface.prototype.test_self = funct
             //"The internal [[Call]] method of the interface object behaves as
             //follows . . .
             //
             //"If I was not declared with a [Constructor] extended attribute,
             //then throw a TypeError."
             assert_throws(new TypeError(), function()
             {
                 window[this.name]();
-            }.bind(this), "interface object didn't throw TypeError when called as a function");
+            }, "interface object didn't throw TypeError when called as a function");
             assert_throws(new TypeError(), function()
             {
                 new window[this.name]();
-            }.bind(this), "interface object didn't throw TypeError when called as a constructor");
+            }, "interface object didn't throw TypeError when called as a constructor");
         }
     }.bind(this), this.name + " interface: existence and properties of interface object");
 
     if (this.has_extended_attribute("Constructor"))
     {
         test(function()
         {
             assert_own_property(window, this.name,
@@ -1362,17 +1362,17 @@ IdlInterface.prototype.test_interface_of
                 {
                     if (member.arguments[i].optional)
                     {
                         break;
                     }
                     assert_throws(new TypeError(), function()
                     {
                         obj[member.name].apply(obj, args);
-                    }.bind(this), "Called with " + i + " arguments");
+                    }, "Called with " + i + " arguments");
 
                     args.push(create_suitable_object(member.arguments[i].type));
                 }
             }.bind(this), this.name + " interface: calling " + member.name +
             "(" + member.arguments.map(function(m) { return m.type.idlType; }) +
             ") on " + desc + " with too few arguments must throw TypeError");
         }
     }
--- a/dom/imptests/testharness.css
+++ b/dom/imptests/testharness.css
@@ -67,17 +67,17 @@ tr.fail > td:first-child {
 tr.timeout > td:first-child {
     color:red;
 }
 
 tr.notrun > td:first-child {
     color:blue;
 }
 
-.pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child {
+.pass .fail .timeout .notrun > td:first-child {
     font-variant:small-caps;
 }
 
 table#results span {
     display:block;
 }
 
 table#results span.expected {
--- a/dom/imptests/testharness.js
+++ b/dom/imptests/testharness.js
@@ -285,24 +285,16 @@ policies and contribution forms [3].
  *     o null:   allow any exception (in general, one of the options above
  *               should be used)
  *   func - a function that should throw
  *
  * assert_unreached(description)
  *   asserts if called. Used to ensure that some codepath is *not* taken e.g.
  *   an event does not fire.
  *
- * assert_any(assert_func, actual, expected_array, extra_arg_1, ... extra_arg_N)
- *   asserts that one assert_func(actual, expected_array_N, extra_arg1, ..., extra_arg_N)
- *   is true for some expected_array_N in expected_array. This only works for assert_func
- *   with signature assert_func(actual, expected, args_1, ..., args_N). Note that tests
- *   with multiple allowed pass conditions are bad practice unless the spec specifically
- *   allows multiple behaviours. Test authors should not use this method simply to hide 
- *   UA bugs.
- *
  * assert_exists(object, property_name, description)
  *   *** deprecated ***
  *   asserts that object has an own property property_name
  *
  * assert_not_exists(object, property_name, description)
  *   *** deprecated ***
  *   assert that object does not have own property property_name
  */
@@ -445,17 +437,16 @@ policies and contribution forms [3].
         if (Array.isArray(val))
         {
             return "[" + val.map(format_value).join(", ") + "]";
         }
 
         switch (typeof val)
         {
         case "string":
-            val = val.replace("\\", "\\\\");
             for (var i = 0; i < 32; i++)
             {
                 var replace = "\\";
                 switch (i) {
                 case 0: replace += "0"; break;
                 case 1: replace += "x01"; break;
                 case 2: replace += "x02"; break;
                 case 3: replace += "x03"; break;
@@ -588,23 +579,16 @@ policies and contribution forms [3].
     }
 
     function assert_equals(actual, expected, description)
     {
          /*
           * Test if two primitives are equal or two objects
           * are the same object
           */
-        if (typeof actual != typeof expected)
-        {
-            assert(false, "assert_equals", description,
-                          "expected (" + typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}",
-                          {expected:expected, actual:actual});
-            return;
-        }
         assert(same_value(actual, expected), "assert_equals", description,
                                              "expected ${expected} but got ${actual}",
                                              {expected:expected, actual:actual});
     };
     expose(assert_equals, "assert_equals");
 
     function assert_not_equals(actual, expected, description)
     {
@@ -900,37 +884,16 @@ policies and contribution forms [3].
     expose(assert_throws, "assert_throws");
 
     function assert_unreached(description) {
          assert(false, "assert_unreached", description,
                 "Reached unreachable code");
     }
     expose(assert_unreached, "assert_unreached");
 
-    function assert_any(assert_func, actual, expected_array) 
-    {
-        var args = [].slice.call(arguments, 3)
-        var errors = []
-        var passed = false;
-        forEach(expected_array, 
-                function(expected)
-                {
-                    try {
-                        assert_func.apply(this, [actual, expected].concat(args))
-                        passed = true;
-                    } catch(e) {
-                        errors.push(e.message);
-                    }
-                });
-        if (!passed) {
-            throw new AssertionError(errors.join("\n\n"));
-        }
-    }
-    expose(assert_any, "assert_any");
-
     function Test(name, properties)
     {
         this.name = name;
         this.status = this.NOTRUN;
         this.timeout_id = null;
         this.is_done = false;
 
         this.properties = properties;
@@ -1012,33 +975,16 @@ policies and contribution forms [3].
 
         return function()
         {
             test_this.step.apply(test_this, [func, this_obj].concat(
                 Array.prototype.slice.call(arguments)));
         };
     };
 
-    Test.prototype.step_func_done = function(func, this_obj)
-    {
-        var test_this = this;
-
-        if (arguments.length === 1)
-        {
-            this_obj = test_this;
-        }
-
-        return function()
-        {
-            test_this.step.apply(test_this, [func, this_obj].concat(
-                Array.prototype.slice.call(arguments)));
-            test_this.done();
-        };
-    };
-
     Test.prototype.set_timeout = function()
     {
         var this_obj = this;
         this.timeout_id = setTimeout(function()
                                      {
                                          this_obj.timeout();
                                      }, this.timeout_length);
     };
@@ -1569,17 +1515,17 @@ policies and contribution forms [3].
                 if (Array.isArray(test.properties.assert)) {
                     return test.properties.assert.join(' ');
                 }
                 return test.properties.assert;
             }
             return '';
         }
         
-        log.appendChild(document.createElementNS(xhtml_ns, "section"));
+        log.appendChild(document.createElement("section"));
         var assertions = has_assertions();
         var html = "<h2>Details</h2><table id='results' " + (assertions ? "class='assertions'" : "" ) + ">"
             + "<thead><tr><th>Result</th><th>Test Name</th>"
             + (assertions ? "<th>Assertion</th>" : "")
             + "<th>Message</th></tr></thead>"
             + "<tbody>";
         for (var i = 0; i < tests.length; i++) {
             html += '<tr class="'
@@ -1913,9 +1859,9 @@ policies and contribution forms [3].
          w = w.parent;
          rv.push(w);
      }
      ancestor_windows.result_cache = rv;
      return rv;
  }
 
 })();
-// vim: set expandtab shiftwidth=4 tabstop=4:
+// vim: set expandtab shiftwidth=4 tabstop=4:
\ No newline at end of file
--- a/dom/imptests/webapps.mk
+++ b/dom/imptests/webapps.mk
@@ -1,7 +1,6 @@
 DIRS += \
   webapps/DOMCore/tests/approved \
-  webapps/DOMCore/tests/submissions/Ms2ger \
   webapps/DOMCore/tests/submissions/Opera \
   webapps/WebStorage/tests/submissions \
   webapps/XMLHttpRequest/tests/submissions/Ms2ger \
   $(NULL)
--- a/dom/imptests/webapps.txt
+++ b/dom/imptests/webapps.txt
@@ -1,6 +1,5 @@
 https://dvcs.w3.org/hg/webapps|webapps
 DOMCore/tests/approved
-DOMCore/tests/submissions/Ms2ger
 DOMCore/tests/submissions/Opera
 WebStorage/tests/submissions
 XMLHttpRequest/tests/submissions/Ms2ger
deleted file mode 100644
--- a/dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/Document-createProcessingInstruction.js
+++ /dev/null
@@ -1,39 +0,0 @@
-test(function() {
-  var invalid = [
-        ["A", "?>"],
-        ["\u00B7A", "x"],
-        ["\u00D7A", "x"],
-        ["A\u00D7", "x"],
-        ["\\A", "x"],
-        ["\f", "x"],
-        [0, "x"],
-        ["0", "x"]
-      ],
-      valid = [
-        ["xml:fail", "x"],
-        ["A\u00B7A", "x"],
-        ["a0", "x"]
-      ]
-
-  for (var i = 0, il = invalid.length; i < il; i++) {
-    test(function() {
-      assert_throws("INVALID_CHARACTER_ERR", function() {
-        document.createProcessingInstruction(invalid[i][0], invalid[i][1])
-      })
-    }, "Should throw an INVALID_CHARACTER_ERR for target " +
-       format_value(invalid[i][0]) + " and data " +
-       format_value(invalid[i][1]) + ".")
-  }
-  for (var i = 0, il = valid.length; i < 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);
-    }, "Should get a ProcessingInstruction for target " +
-      format_value(valid[i][0]) + " and data " +
-      format_value(valid[i][1]) + ".")
-  }
-})
deleted file mode 100644
--- a/dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/Makefile.in
+++ /dev/null
@@ -1,115 +0,0 @@
-# THIS FILE IS AUTOGENERATED BY importTestsuite.py - DO NOT EDIT
-
-DEPTH = ../../../../../../..
-
-topsrcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-relativesrcdir = dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger
-
-DIRS = \
-  $(NULL)
-
-include $(DEPTH)/config/autoconf.mk
-include $(topsrcdir)/config/rules.mk
-
-_FILES = \
-  test_attributes.html \
-  test_case.html \
-  test_CharacterData-appendData.html \
-  test_CharacterData-deleteData.html \
-  test_CharacterData-insertData.html \
-  test_CharacterData-replaceData.html \
-  test_Document-adoptNode.html \
-  test_Document-createComment.html \
-  test_Document-createElement.html \
-  test_Document-createElementNS.html \
-  test_Document-createEvent.html \
-  test_Document-createProcessingInstruction.html \
-  test_Document-createProcessingInstruction-literal-1.xhtml \
-  test_Document-createProcessingInstruction-literal-2.xhtml \
-  test_Document-createProcessingInstruction.xhtml \
-  test_Document-getElementById.html \
-  test_Document-getElementsByTagName.html \
-  test_Document-getElementsByTagNameNS.html \
-  test_Document-importNode.html \
-  test_DOMException-constants.html \
-  test_DOMImplementation-createDocument.html \
-  test_DOMImplementation-createDocumentType.html \
-  test_DOMImplementation-createHTMLDocument.html \
-  test_DOMImplementation-hasFeature.html \
-  test_Element-childElementCount-dynamic-add.html \
-  test_Element-childElementCount-dynamic-add.svg \
-  test_Element-childElementCount-dynamic-add.xhtml \
-  test_Element-childElementCount-dynamic-remove.html \
-  test_Element-childElementCount-dynamic-remove.svg \
-  test_Element-childElementCount-dynamic-remove.xhtml \
-  test_Element-childElementCount.html \
-  test_Element-childElementCount-nochild.html \
-  test_Element-childElementCount-nochild.svg \
-  test_Element-childElementCount-nochild.xhtml \
-  test_Element-childElementCount.svg \
-  test_Element-childElementCount.xhtml \
-  test_Element-childElement-null.html \
-  test_Element-childElement-null.svg \
-  test_Element-childElement-null.xhtml \
-  test_Element-children.html \
-  test_Element-firstElementChild-entity.svg \
-  test_Element-firstElementChild-entity.xhtml \
-  test_Element-firstElementChild.html \
-  test_Element-firstElementChild-namespace.html \
-  test_Element-firstElementChild-namespace.svg \
-  test_Element-firstElementChild-namespace.xhtml \
-  test_Element-firstElementChild.svg \
-  test_Element-firstElementChild.xhtml \
-  test_Element-getElementsByClassName.html \
-  test_Element-lastElementChild.html \
-  test_Element-lastElementChild.svg \
-  test_Element-lastElementChild.xhtml \
-  test_Element-nextElementSibling.html \
-  test_Element-nextElementSibling.svg \
-  test_Element-nextElementSibling.xhtml \
-  test_Element-previousElementSibling.html \
-  test_Element-previousElementSibling.svg \
-  test_Element-previousElementSibling.xhtml \
-  test_Element-removeAttributeNS.html \
-  test_Element-siblingElement-null.html \
-  test_Element-siblingElement-null.svg \
-  test_Element-siblingElement-null.xhtml \
-  test_Element-tagName.html \
-  test_Event-constants.html \
-  test_Event-constructors.html \
-  test_Event-defaultPrevented.html \
-  test_Event-initEvent.html \
-  test_EventTarget-dispatchEvent.html \
-  test_historical.html \
-  test_interfaces.html \
-  test_Node-appendChild.html \
-  test_Node-cloneNode.html \
-  test_Node-constants.html \
-  test_Node-insertBefore.html \
-  test_Node-isEqualNode.xhtml \
-  test_Node-lookupPrefix.xhtml \
-  test_Node-nodeName.html \
-  test_Node-nodeName.xhtml \
-  test_Node-normalize.html \
-  test_Node-parentElement.html \
-  test_Node-parentNode.html \
-  test_Node-removeChild.html \
-  test_Node-replaceChild.html \
-  test_NodeFilter-constants.html \
-  test_Range-attributes.html \
-  test_Range-commonAncestorContainer.html \
-  test_Range-comparePoint.html \
-  test_Range-detach.html \
-  test_Range-intersectsNode.html \
-  attributes.js \
-  case.js \
-  creators.js \
-  constants.js \
-  Document-createProcessingInstruction.js \
-  productions.js \
-  $(NULL)
-
-libs:: $(_FILES)
-	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)
deleted file mode 100644
--- a/dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/attributes.js
+++ /dev/null
@@ -1,14 +0,0 @@
-function attr_is(attr, v, ln, ns, p, n) {
-  assert_equals(attr.value, v)
-  assert_equals(attr.localName, ln)
-  assert_equals(attr.namespaceURI, ns)
-  assert_equals(attr.prefix, p)
-  assert_equals(attr.name, n)
-}
-
-function attributes_are(el, l) {
-  for (var i = 0, il = l.length; i < il; i++) {
-    attr_is(el.attributes[i], l[i][1], l[i][0], (l[i].length < 3) ? null : l[i][2], null, l[i][0])
-//    assert_equals(el.attributes[i].ownerElement, el)
-  }
-}
deleted file mode 100644
--- a/dom/imptests/webapps/DOMCore/tests/submissions/Ms2ger/case.js
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * 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 = ["abc", "Abc", "ABC", "ä", "Ä"];
-        var namespaces = ["http://www.w3.org/1999/xhtml", "http://www.w3.org/2000/svg", "http://FOO"];
-        name_inputs.forEach(function(x) {
-                              tests.push(["createElement " + x, test_create_element, [x]]);
-                              tests.push(["setAttribute " +x, test_set_attribute, [x]]);
-                              tests.push(["getAttribute " +x, test_get_attribute, [x]]);
-                              tests.push(["getElementsByTagName " +x, test_get_elements_tag_name,
-                                          [outer_product(namespaces, ["a"], name_inputs),
-                                           x]]);
-                            });
-        outer_product(namespaces, name_inputs, name_inputs).forEach(function(x) {
-                                                                      tests.push(["createElementNS " + x, test_create_element_ns, x]);
-                                                                      tests.push(["setAttributeNS " + x, test_set_attribute_ns, x]);
-                                                                      tests.push(["getAttributeNS " + x, test_get_attribute_ns, x]);
-                                                                    });
-        outer_product([null].concat(namespaces), name_inputs).forEach(function(x) {
-                                                                        tests.push(["getElementsByTagNameNS " + x, test_get_elements_tag_name_ns,
-                                                                        outer_product(namespaces, name_inputs), x]);
-                                                                      });
-        name_inputs.forEach(function(x) {
-                              tests.push(["createElementNS " + x, test_create_element_ns, [null, null, x]]);
-                              tests.push(["setAttributeNS " + x, test_set_attribute_ns, [null, null, x]]);
-                              tests.push(["getAttributeNS " + 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 < 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();
-                       });
-}