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 101439 c801b99d726f06fd89b517936a42e1cffe0a1ca5
parent 101438 02cbcf0159fae7eb42e51a4faad09db878e551d5
child 101440 0a17cde2a4b69265c48577b9848b33d0a1ab0d5b
child 101441 0a48f2d0e2a0626a53b11a670f070cde9d3856b8
push id983
push userttaubert@mozilla.com
push dateSun, 05 Aug 2012 09:32:45 +0000
treeherderfx-team@38bf3dfd81a0 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone17.0a1
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 exp